postgres serial/bigserial列的java适当Hibernate id生成器?
我的PostgreSQL表具有类型为bigserial
的id,这意味着它们是在插入行时生成的(因此,INSERT
语句中不提供id列的值)。在XML映射文件中,我很难找到<generator class="...">
属性的正确值
下面的代码是我发现的最接近的代码,似乎是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>
# 1 楼答案
从我读到的:
工作速度应快于:
序列生成器属于非插入POID生成器,如下所述:
当标识生成器为插入后POID生成器时,组:
引用自NHibernate 3.0食谱
# 2 楼答案
这是没有文档记录的,但是当PK类型为
SERIAL
或BIGSERIAL
时,实际上可以将identity
生成器与PostgreSQL一起使用:有关这方面的背景信息,请参见HB-875和HHH-1675
# 3 楼答案
尝试了以下操作并成功: