我正在尝试学习Hibernate的工作原理,并且我遇到了几乎不可接受的学习曲线。我看不到如何让Hibernate尊重我的对象的auto_increment策略。而是使用现有的ID覆盖数据库中的条目,以1开头。
我有一个简单的Foo对象,由一个如下定义的MySQL表支持:
CREATE TABLE `Foo` (
`fooId` int(11) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`fooId`),
)
我已经确认使用SQL插入多个Foo对象(插入Foo values();)做正确的事情。
我的Java类具有使用如下注释指定的ID:
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name="fooId")
private Integer id;
然后我执行一些测试代码,简单地实例化Foo对象并将它们保存到数据库(使用session.save(obj))。看起来它使用自己的主键序列,从一开始,不看表的关键策略。它覆盖了所有的东西。
我已经尝试了@GeneratedValue位的变体(使用所有可能的策略,离开括号子句)。有人甚至建议完全离开GeneratedValue。没有什么似乎工作。
我要离开吗?我失踪了什么Hibernate真的这么难吗?
(如果任何人有另一种Java数据库持久性选项,请建议一个,我正在制作原型,而不是持久的mondo工程项目)