2013-03-19 51 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

相關問題