尽管有注释,OpenJPA 仍生成不正确的查询
OpenJPA produces incorrect query despite an annotation
我的应用程序中有一个 buildings/floors/rooms 层次结构。每当我尝试添加楼层(使用 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
失败对象:com.RoomAllocation.entities.Floor@1d32457
关于地板对象,具体来说FLOOR_ID:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "FLOOR_ID")
private int floorId;
数据库中的字段始终作为标识生成。
相同的设置适用于建筑物和房间,我使用相同的代码来创建和保存对象。据我了解,openJPA 应该将 DEFAULT
放入查询中,而不是放入 0,因为它是 int 默认值。有办法解决吗?我缺少什么?
通过将 insertable = false, updatable = false
添加到 @Column
注释,我成功地阻止了这种行为。
我的应用程序中有一个 buildings/floors/rooms 层次结构。每当我尝试添加楼层(使用 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 失败对象:com.RoomAllocation.entities.Floor@1d32457
关于地板对象,具体来说FLOOR_ID:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "FLOOR_ID")
private int floorId;
数据库中的字段始终作为标识生成。
相同的设置适用于建筑物和房间,我使用相同的代码来创建和保存对象。据我了解,openJPA 应该将 DEFAULT
放入查询中,而不是放入 0,因为它是 int 默认值。有办法解决吗?我缺少什么?
通过将 insertable = false, updatable = false
添加到 @Column
注释,我成功地阻止了这种行为。