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,以及为什么忽略生成器注释。