Объект с идентификатором типа String error
У меня есть следующая сущность, когда я сохраняю, я получаю дамп, я перехожу к значению строки поля (это то, как модель определила там строку типа идентификатора со значением, таким как (отпуск,WORK_ACCIDENT... так что я не могу изменить это) и ошибка
Недопустимый формат строки символов для типа INTEGER.
@Entity
public class LeaveReType {
@Id
@GeneratedValue(strategy = GenerationType.TABLE)
private String id;
У меня есть другая сущность со строкой типа идентификатора, и когда я перехожу к ней, номер персистентности работает нормально, могу ли я использовать некоторую аннотацию для идентификатора, чтобы игнорировать это ограничение?
Exception in thread "main" javax.persistence.RollbackException: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.4.1.v20121003-ad44345): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLDataException: Invalid character string format for type INTEGER.
Error Code: 20000
Call: INSERT INTO LESTTYPE (ID, AVAILABLEBALANCE, ENTITLEMENT, NAME, PENDINGITEMS) VALUES (?, ?, ?, ?, ?)
bind => [5 parameters bound]
Query: InsertObjectQuery(LESTTYPE [id=WORK_ACCIDENT, name=Work Accident, entitlement=n/a, availableBalance=n/a, pendingItems=0 pending items])
Я также пытался и я получаю ту же ошибку
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@TypeConverter(dataType = Long.class, name = "id")
private String id;
1 ответ
Если у вас тип базы данных NUMBER, если вы хотите, чтобы тип вашего объекта был String, вы должны использовать конвертер для преобразования типа.
т.е. @TypeConverter(dataType=Long.class)
Но на самом деле, если у вас тип базы данных NUMBER, вы должны использовать числовой тип в Java. Вы все еще можете иметь метод get/set, который принимает String, если хотите. Также использование @GeneratedValue для типа String является странным.