0

我注意到我的 PostgreSQL 数据库中的 hibernate_sequence 很有趣。到目前为止,序列(我的数据库中的所有表都使用)一直递增 1。然而,情况不再如此。

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

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

对于我的生活,我不知道为什么,但它影响了我运行的一些数据库脚本,这些脚本每晚在不同环境之间传输数据。

我希望它与以下文章没有任何关系,该文章声明@GeneratedValue(strategy=GenerationType.SEQUENCE)“使用 HiLo 策略,默认情况下以 50 个块分配 ID”。 Hibernate使用PostgreSQL序列不影响序列表

如果是这样的话,序列ID会有这么大的跳跃吗?从432711872053?

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

还有其他可能的解释吗?

谢谢!


代码示例:

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

1 回答 1

1

我相信我正在经历以下帖子中描述的内容,这也与 HiLo 算法有关:休眠预言机序列产生大间隙

于 2012-09-07T13:11:35.800 回答