我使用 liquibase 创建了一个表:
<createTable tableName="employees">
<column name="id" type="bigint">
<constraints primaryKey="true" nullable="false"/>
</column>
<column name="name" type="varchar(50)">
<constraints nullable="false"/>
</column>
</createTable>
生成以下 sql ddl 查询:
CREATE TABLE employees (id BIGINT NOT NULL, name VARCHAR(50) NOT NULL, CONSTRAINT PK_EMPLOYEES PRIMARY KEY (id));
对应实体:
@Entity
@Table(name="employees")
public class EmployeeAccessProperty ...
@Id
@GeneratedValue
public long getId() {
return id;
}
...
现在,当我尝试通过 JPA 实现保存它时,会生成 sql 查询以插入数据:
Hibernate: insert into employees (id, name) values (default, ?)
2013-05-20T14:29:22.525+0700 WARN SQL Error: -5544, SQLState: 42544
2013-05-20T14:29:22.526+0700 ERROR DEFAULT keyword cannot be used as column has no DEFAULT
我预计,当我不指定 id 生成策略时,Hibernate 会根据提供者选择最好的一个。我不明白为什么要尝试使用默认值来生成 ID。我不确定,哪一方对错误负责:hibernate、liqubase 或 hsqldb。
我能做些什么来解决这个问题?请帮我。