休眠不尊重MySQL auto_increment主键字段
我试图了解Hibernate是如何工作的,我遇到了一个几乎不可接受的学习曲线。我看不出如何让Hibernate尊重我的对象的auto_increment策略。相反,它使用现有 ID 覆盖数据库中的条目,从 1 开始。
我有一个简单的对象,由一个MySQL表支持,定义如下:Foo
CREATE TABLE `Foo` (
`fooId` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`fooId`),
)
我已经确认使用SQL()手动插入多个Foo对象是正确的。insert into Foo values();
我的 Java 类具有使用如下所示的注释指定的 ID:
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="fooId")
private Integer id;
然后,我执行一些测试代码,这些代码只是实例化 Foo 对象并将其保存到数据库中(使用 )。它似乎使用自己的主键序列,从一个开始,并且不查看表的键策略。它覆盖了那里的任何东西。session.save(obj)
我已经尝试了位的变体(使用所有可能的策略,省略括号子句)。有人甚至建议完全放弃。似乎什么都行不通。@GeneratedValue
GeneratedValue
我是否遗漏了什么?我错过了什么?冬眠真的这么难吗?
(如果有人有替代的Java数据库持久性选项,请建议一个。我正在制作原型,而不是持久的mondo工程项目。