适用于Postgres串行/BigSerial列的适当的Hibernate ID生成器?
-
26-09-2019 - |
题
我的postgresql表具有类型的ID bigserial
, ,这意味着它们是在插入时生成的(因此,ID列的值未提供 INSERT
陈述)。我很难找到适合的价值 <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>
其他提示
从我阅读的内容中:
<id name="id" column="id" type="java.lang.Long">
<generator class="sequence">
<param name="sequence">my_sequence_name</param>
</generator>
</id>
应该比:
<id name="id" column="id" type="java.lang.Long">
<generator class="identity" />
</id>
序列发生器落入 非插入POID发电机 这样描述:
非插入POID生成器是新应用程序的最佳选择。这些生成器允许NHIBERNATE将身份分配给持续的对象,而无需将对象的数据写入thedatabase,从而允许NHIBERNATE延迟写入,直到业务交易完成,并减少到数据库的圆形旅行。
当身份生成器是 插入后的POID发电机 团体:
插入后POID生成器要求将数据持续到数据库中,以生成ID。 这以非常微妙的方式改变了NHIBERNATE的行为,并禁用了一些性能功能。因此,强烈劝阻这些Poid发电机的使用! 它们仅应与其他应用程序依赖此行为的现有数据库一起使用。
引号是从Nhibernate 3.0食谱中获取的。
尝试关注并起作用:
<id name="id" column="id" type="long" unsaved-value="null" >
<generator class="sequence">
<param name="sequence">my_sequence_name</param>
</generator>
</id>
不隶属于 StackOverflow