2016-08-22 75 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注释我成功地停止了此行为。