ID类型为String的实体错误

时间:2013-03-19 09:24:46

标签: java jpa eclipselink derby

当我坚持下去时,我有以下实体,我得到了转储, 我移动到字段字符串值(这是模型定义的那种ID类型字符串的值,如(休假,WORK_ACCIDENT ......所以我不能改变它),错误是

类型为INTEGER的字符串格式无效。

@Entity
public class LeaveReType {

    @Id
    @GeneratedValue(strategy = GenerationType.TABLE)
    private String id;

我有另一个ID类型字符串的实体,当我移动它时,持久性编号 工作正常,我可以使用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 个答案:

答案 0 :(得分:0)

如果数据库类型为NUMBER,您希望对象类型为String,则应使用Converter转换类型。

即。 @TypeConverter(的dataType = Long.class)

但实际上,如果数据库类型为NUMBER,则应在Java中使用数字类型。如果您愿意,您仍然可以获取/设置采用String的方法。在String类型上使用@GeneratedValue也是奇数。