2016-08-22 77 views
0

我的應用程序中有一個建築物/樓層/房間的層次結構。每當我試圖添加的地板(含entiryManager.persist(floor))我得到以下異常:儘管有註釋,OpenJPA會產生錯誤的查詢

Caused by: <openjpa-2.2.3-SNAPSHOT-r422266:1715851 fatal general error> org.apache.openjpa.persistence.PersistenceException: DB2 SQL Error: SQLCODE=-798, SQLSTATE=428C9, SQLERRMC=FLOOR_ID, DRIVER=3.68.61 {prepstmnt 925512112 INSERT INTO ROOMALLOCATION.Floor (FLOOR_ID, FLOOR_NAME, FLOOR_CODE, SITE_ID) VALUES (?, ?, ?, ?)} [code=-798, state=428C9]SQLCA OUTPUT[Errp=SQLRI079, Errd=-2145779603, 0, 0, 0, -95, 0] 

DB2 SQL錯誤:SQLCODE = -798,SQLSTATE = 428C9,則sqlerrmc = FLOOR_ID,DRIVER = 3.68.61 FailedObject :[email protected]

在地板對象,具體FLOOR_ID:

@Id 
@GeneratedValue(strategy = GenerationType.IDENTITY) 
@Column(name = "FLOOR_ID") 
private int floorId; 

該字段在數據庫AS IDENTITY始終會生成。

同樣的設置適用於建築物和房間,我使用相同的代碼來創建和保留對象。據我瞭解openJPA應該把DEFAULT放在查詢中,而不是這個放0,因爲它是int默認值。有沒有辦法解決它?我失蹤的東西?

回答

0

通過將insertable = false, updatable = false添加到@Column註釋我成功地停止了此行爲。