Java 如何防止Hibernate将0用作ID?
我正在使用Java 如何防止Hibernate将0用作ID?,java,hibernate,jpa,jboss,generator,Java,Hibernate,Jpa,Jboss,Generator,我正在使用 @TableGenerator(name="tab",initialValue=2,allocationSize=50) 在实体上,使用 @Id @GeneratedValue(generator="tab",strategy=GenerationType.TABLE) private int id; 但是Hibernate仍然使用0作为ID 我不能使用@GenericGenerator,因为注释不是Jboss AS7附带的Hibernate4 是否有一个简单的解决方案,或者我必
@TableGenerator(name="tab",initialValue=2,allocationSize=50)
在实体上,使用
@Id
@GeneratedValue(generator="tab",strategy=GenerationType.TABLE)
private int id;
但是Hibernate仍然使用0作为ID
我不能使用@GenericGenerator,因为注释不是Jboss AS7附带的Hibernate4
是否有一个简单的解决方案,或者我必须编写一个自定义生成器?Hibernate正在创建id为
0
的id,因为您有一个基本类型。尝试使用整数id
而不是整数id
。请记住,基本体不能包含空值
如果要生成自定义id生成器,可以在DB中使用序列
来生成对象的id
<id ....>
<generator class="sequence">
<param name="sequence">YOUR_SEQUENCE _NAME</param>
</generator>
</id>
您的\u序列\u名称
阅读有关生成器类的API。您没有覆盖注释的部署描述符代码吗?您是在使用架构初始化还是在现有数据库上工作?没有特定于数据库的部署描述符。我现在正在通过import.sql使用一些示例数据。您确定在这些数据中没有任何插入到表生成器所在的表中吗?在执行import.sql之前,您是否尝试调用空数据库上的代码以让Hibernate生成所有表?请参阅(我遇到了相同的问题--我想使用Hibernate串行主键,但Hibernate一直为id插入0--将其设置为链接所描述的,现在我的插入可用于postgres)谢谢。问题是,是否需要自定义生成器来告诉Hibernate不要使用0作为ID,以及为什么忽略生成器注释。