适用于postgres serial/bigserial列的正确Hibernate id生成器?

Mat*_*ins 18 java mapping postgresql hibernate hibernate-mapping

我的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>
Run Code Online (Sandbox Code Playgroud)

Pas*_*ent 20

这是无证但实际上你可以使用identityPostgreSQL的发电机在PK的时候是类型SERIALBIGSERIAL:

<id name="id" column="user_id" type="java.lang.Long">
     <generator class="identity"/>
</id>
Run Code Online (Sandbox Code Playgroud)

有关此问题,请参阅HB-875HHH-1675.