Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate映射文件中的Hibernate和Postgresql生成器类_Hibernate_Postgresql_Orm_Sequences - Fatal编程技术网

Hibernate映射文件中的Hibernate和Postgresql生成器类

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"/> </

我的postgresql数据库中的ID是自动递增的(数据库中定义了序列)。创建hibernate映射文件时,我将类生成器设置为增量:

<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,这导致我得出结论,我必须使用不同的生成器类。