自动生成策略不是暗示提供者(在这种情况下为hibernate)将自动选择正确的方法并根据需要进行所有繁重的工作(创建序列,使用本机方法或适用于该特定平台的任何方法)吗?我的理解不正确吗?
从理论上讲(它在HSQLDB中默认为IDENTITY),并且对我有用。这提出了以下问题:
- 您正在使用什么方言(以防万一)?
- 您是如何创建表格的?
- 您可以显示DDL(
org.hibernate.tool.hbm2ddl
如果需要,激活DDL的日志记录)吗? - 您如何插入(通过Hibernate的API,对吗?)?
这是
Foo使用HSQLDB时实体的示例DDL :
create table Foo ( id bigint generated by default as identity (start with 1), bar varchar(100), primary key (id))
我使用HSQL DB管理器创建了表。只是正常的创建表地址…就我而言,我没有将id列设置为标识-只是将其设置为主键。
然后您就有了答案,请使用
IDENTITY专栏。
虽然Hibernate确实选择了正确的策略并确实生成了适当的
INSERT语句(传递
null给预期将保留在
IDENTITY列中的id
),但是如果您不使用DDL生成和导出,它将不会创建或更改您的物理模型。能力。



