小编典典

正确的Hibernate ID生成器用于postgres串行/大串行列?

hibernate

我的PostgreSQL表具有id的类型bigserial,这意味着它们是在插入行时生成的(因此,该INSERT语句中未提供id列的值)。我<generator class="...">在XML映射文件中找不到属性的正确值时遇到困难。

下面的代码是我发现的最接近于Postgres的代码,但是SELECT nextval(...)在插入之前(仍在插入中显式包括id字段的值),它仍然在序列上执行。我只希望Hibernate根本不包含id字段值,从而允许Postgres自己生成值本身。

    <id name="id" column="id" type="java.lang.Long">
        <generator class="sequence">
            <param name="sequence">my_sequence_name</param>
        </generator>
    </id>

阅读 219

收藏
2020-06-20

共1个答案

小编典典

这没有记录,但是identity当PK的类型为SERIAL或时,实际上您可以在PostgreSQL中使用生成器BIGSERIAL

<id name="id" column="user_id" type="java.lang.Long">
     <generator class="identity"/>
</id>

有关此背景,请参见 HB-875
HHH-1675

2020-06-20