【发布时间】:2014-10-07 14:05:05
【问题描述】:
我正在使用 HSQL 数据库来测试一个 spring hibernate 项目,并且最近引入了一个标识字段。
java类看起来像(sn-p):
@Entity
@Table(name = "my_table")
public class MyTable {
@Column(name = "sequence_number")
@Id
@GeneratedValue
private Long sequenceNumber;
}
我生成表的sql脚本如下(sn-p):
CREATE TABLE my_table (
"sequence_number" BIGINT GENERATED BY DEFAULT AS IDENTITY,
PRIMARY KEY("sequence_number")
);
当我尝试向数据库添加值时,sql(通过 show_sql)是:
insert into my_table (sequence_number) values (default)
我得到一个异常堆栈跟踪作为关键指标:
org.hibernate.exception.SQLGrammarException: could not prepare statement
Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found: SEQUENCE_NUMBER
我怀疑 HSQLDB 不喜欢default SQL 关键字,而是希望看到null。有没有办法通过休眠获得这种行为?
否则,有没有办法让这段代码工作?
我使用的是休眠 4.2.8 和 HSQLDb 2.3.2。
【问题讨论】:
标签: java sql database hibernate hsqldb