【发布时间】:2015-03-20 17:45:51
【问题描述】:
当 JPA 尝试持久化实体时,DB2-express 抛出了一个看似不可能的错误:
ReportingSQLException: "ITEMID" is not valid in the context where it is used..
INSERT INTO NULLID."DynamicDatabaseTable" ("colname", "rownumber", "value")
VALUES (?, ?, ?) [params=?, ?, ?]
由于上面的查询中没有使用ITEMID,怎么会出现这个错误? ITEMID是一个自动标识生成的列。
我已经尝试手动执行查询,它工作正常,所以有人知道这是怎么回事吗?即使经过大量谷歌搜索,我在这里完全一无所知。
DB2中的数据库表没问题,我有三重检查:
"itemid" BIGINT NOT NULL GENERATED ALWAYS AS IDENTITY ( START WITH 1...),
"rownumber" BIGINT NOT NULL,
"colname" CHAR(30 OCTETS) NOT NULL,
"value" VARCHAR(254 OCTETS)
我使用 Eclipse 向导创建了一个简单的 java“表中的 JPA 实体”,并且我已经三次检查该类是否正常。
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="\"itemid\"", unique=true, nullable=false)
private long itemid;
@Column(name="\"rownumber\"", nullable=false)
private long rownumber;
@Column(name="\"colname\"", nullable=false, length=30)
private String colname;
@Column(name="\"value\"", length=254)
private String value;
为了以防万一,我还重新启动了整个计算机,但什么都没有……而且我正在使用最新版本,几周前全新安装。
【问题讨论】: