【发布时间】:2016-10-14 11:39:54
【问题描述】:
环境:Websphere 8.5、OpenJPA 2.0、DB2 z/OS
有两个表:一个包含经过验证的数据,另一个包含草稿数据(临时表)+ 显示两个表中信息的视图。
为了避免主键冲突,我决定临时表将负值作为主键。它在纯 SQL 中工作,但是当我尝试在 Java 代码中为暂存表定义生成器时,我的方法失败了
否定键的生成器是这样定义的:
CREATE SEQUENCE X AS INTEGER START WITH -1 INCREMENT BY -1
MINVALUE -999999 MAXVALUE 0
在实体方面:
@Id
@SequenceGenerator(name="X", sequenceName="X")
@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="X")
@Column(name = "ID")`
第一个元素已成功创建(值为-1),但第二个元素的插入失败,
标识列或序列的值范围已用尽。 SQLCODE=-359, SQLSTATE=23522
你能帮我定义@SequenceGenerator吗?在 Open JPA 2.0 下可以吗?可能序列定义错误(MINVALUE/MAXVALUE)
【问题讨论】:
-
作为短期修复,我修改了生成器:'START WITH -99999 INCREMENT BY 1'。不是很漂亮,但很管用。
-
必须是特定于 DB2 z/OS 的错误/功能——它在 Linux 上按预期工作。