2013-03-19 46 views
0

我有以下实体时,我坚持我进行转储, 我移动到字段字符串值(这是如何模型定义有ID值字符串与值如度假,WORK_ACCIDENT ......所以我不能改变它),误差ID类型字符串错误的实体

类型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

http://stackoverflow.com/questions/4930762/generate-an-auto-generated-value-of-a-field-under-java-hibernate-id-generated – BobTheBuilder 2013-03-19 09:29:37

+0

@ baraky-我试着添加注释@Column(columnDefinition =“ID1”,name =“id”)和错误是一样的... – 2013-03-19 09:39:02

+0

你试过http://stackoverflow.com/a/8090756/1651233 – BobTheBuilder 2013-03-19 09:43:57

回答

0

如果数据库类型是NUMBER是你希望你的对象类型为字符串,你应该使用一个转换器转换的类型。

即 @TypeConverter(的dataType = Long.class)

不过说真的,如果你的数据库类型是数字,你应该在Java中使用数字类型。如果你愿意,你仍然可以使用get/set方法。对String类型使用@GeneratedValue也是奇怪的。

+0

感谢James,但我试图在您的示例中添加这样的注释,并且即时获得相同的错误,我有在末尾编辑我的帖子,添加了我添加的注释... – 2013-03-19 14:39:35

+0

您还需要@Convert(“id”)(转换器被命名为像序列的对象) – James 2013-03-20 13:51:36

相关问题