Postgres hibernate序列值与插入的数据id不匹配

时间:2012-09-05 16:51:39

标签: hibernate postgresql

我在PostgreSQL数据库中注意到hibernate_sequence的一些有趣内容。到目前为止,序列(我的数据库中的所有表使用的序列)已经递增1.然而,情况已经不是这样了。

目前,hibernate_sequence显示的值为43270.如果我SELECT nextval('hibernate_sequence');,它会正确报告43271

但是,当我将数据插入到表格中时,序列ID现在是1872053

对于我的生活,我无法弄清楚为什么,但它影响了我运行的一些数据库脚本,以便在不同环境之间每晚传输数据。

我希望它与以下文章没有任何关系,该文章声明声明@GeneratedValue(strategy=GenerationType.SEQUENCE)“使用HiLo策略,默认情况下以50块为单位分配ID。” Hibernate use of PostgreSQL sequence does not affect sequence table

如果是这种情况,序列ID会有如此大的跳跃吗?从432711872053

这几乎就像是与hibernate_sequence“断开连接”。当我插入第二个事件时,ID为1872053,但hibernate_sequence值不再更改(它仍将保持在43421)。

还有其他可能的解释吗?

谢谢!


代码示例:

@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE)
private Integer id;

1 个答案:

答案 0 :(得分:1)

我相信我遇到了以下帖子中描述的内容,该帖子也与HiLo算法有关:hibernate oracle sequence produces large gap