Hibernate映射文件中的Hibernate和Postgresql生成器类
我的postgresql数据库中的ID是自动递增的(数据库中定义了序列)。创建hibernate映射文件时,我将类生成器设置为增量:Hibernate映射文件中的Hibernate和Postgresql生成器类,hibernate,postgresql,orm,sequences,Hibernate,Postgresql,Orm,Sequences,我的postgresql数据库中的ID是自动递增的(数据库中定义了序列)。创建hibernate映射文件时,我将类生成器设置为增量: <class name="model.Names" schema="public" table="names"> <id name="id" type="int"> <column name="id"/> <generator class="increment"/> </
<class name="model.Names" schema="public" table="names">
<id name="id" type="int">
<column name="id"/>
<generator class="increment"/>
</id>
但是,我不断遇到各种错误(null指针异常,org.hibernate.TransactionException:Transaction未成功启动),因此我首先要确保这是正确的生成器类,然后再调试并在其他地方查找错误。我尝试了顺序(根本不起作用,增量在某些情况下起作用)。应用程序是用JSF2.0编写的
提前感谢您的建议
致以最良好的祝愿,
sass.如果您想要使用序列,您肯定应该使用
序列中的一个,或者seqhilo
如果您想要hi/lo算法生成器。问题是“根本不起作用”根本无助于理解您所面临的问题
为了以防万一,下面是序列
生成器的一个片段:
<id name="id" type="long" column="person_id">
<generator class="sequence">
<param name="sequence">person_id_sequence</param>
</generator>
</id>
<id name="id" type="long" column="cat_id">
<generator class="seqhilo">
<param name="sequence">hi_value</param>
<param name="max_lo">100</param>
</generator>
</id>
如果您想调查为什么它“根本不起作用”,我建议启用以查看发生了什么
还请注意,当使用串行或BIGSERIAL列时,PostgreSQL确实支持标识
生成器(请参阅和)
工具书类
- Hibernate核心参考指南
谢谢你,帕斯卡。问题是唯一有效的生成器类是increment。当我尝试使用序列时,它不会在数据库中添加对象,因为显然id不能为null,这导致我得出结论,我必须使用不同的生成器类。