如何防止Hibernate使用0作为ID?

时间:2011-11-16 23:54:18

标签: java hibernate jpa jboss generator

我正在使用

@TableGenerator(name="tab",initialValue=2,allocationSize=50)

on Entities并使用

定义ID
@Id
@GeneratedValue(generator="tab",strategy=GenerationType.TABLE)
private int id;

但Hibernate仍然使用0作为ID。

我不能使用@GenericGenerator,因为Jboss AS7附带的Hibernate4没有附带注释。

是否有简单的解决方案,还是我必须编写自定义生成器?

1 个答案:

答案 0 :(得分:3)

Hibernate正在创建id为0的id,因为你有一个原始类型。尝试使用Integer id代替int id。记住原语不能保持空值。

如果要生成自定义ID生成器,可以使用DB中的SEQUENCE生成对象的id。

<id ....>
        <generator class="sequence">
           <param name="sequence">YOUR_SEQUENCE _NAME</param>
       </generator>
</id>

阅读有关生成器类here的API。