hibernate hsqldb标识列无法插入新字段

时间:2014-10-07 14:05:06

标签: java sql database hibernate hsqldb

我使用HSQL数据库测试spring hibernate项目,最近引入了一个identity字段。

java类看起来像(片段):

@Entity
@Table(name = "my_table")
public class MyTable {

    @Column(name = "sequence_number")
    @Id
    @GeneratedValue
    private Long sequenceNumber;

}

我的sql脚本生成表格如下(摘录):

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)

我得到一个带有关键指标的exeption堆栈跟踪:

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。无论如何通过hibernate获得这种行为?

否则,有没有办法让这段代码起作用?

我使用的是hibernate 4.2.8和HSQLDb 2.3.2。

1 个答案:

答案 0 :(得分:0)

问题是sql中的引号。这使得hsqldb中的列名称区分大小写。 hibernate尝试使用ALL-CAPS查找名称。

更改ddl:

CREATE TABLE my_table (
    sequence_number BIGINT GENERATED BY DEFAULT AS IDENTITY,
    PRIMARY KEY(sequence_number) );

解决了这个问题。

相关问题