尽管有注释,但OpenJPA产生的查询不正确

时间:2016-08-22 11:53:32

标签: java jpa db2 openjpa

我的应用程序中有建筑物/楼层/房间的层次结构。每当我尝试添加发言权(entiryManager.persist(floor))时,我都会遇到以下异常:

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:com.RoomAllocation.entities.Floor@1d32457

在楼层对象上,特别是FLOOR_ID:

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

数据库中的字段始终为身份生成。

相同的设置适用于建筑物和房间,我使用相同的代码来创建和持久化对象。据我所知,openJPA应该将DEFAULT放在查询中,而不是将它放到0,因为它是默认值。有办法解决吗?我错过了什么?

1 个答案:

答案 0 :(得分:0)

通过将insertable = false, updatable = false添加到@Column注释,我成功地阻止了这种行为。