Spring JPA 在应用程序的多个节点上的主键上具有 postgre 序列重复值

Spring JPA with postgre Sequence Duplicate Value on Primary Key on multiple nodes of the application

提问人:Goikiu 提问时间:5/26/2023 最后编辑:Goikiu 更新时间:5/26/2023 访问量:136

问:

我被困在一个问题上,无法找到可行的解决方案。

我们有一个应用程序,其中两个 JPA 实体使用相同的序列来生成 id(这是需要的)

-- Father class
@Id
@SequenceGenerator(name = "gen1", sequenceName = "sx_seq", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "gen1")
@Column(name = "id", unique = true)
private Long id;

有两个孩子(他们都以一对差异扩展了父亲)。

数据库不时地在其中一个(而不是另一个)上抛出一个重复的主键,在这个环境中,我们有三个应用程序。

我们有另一个应用程序可以工作(也有三个节点),但区别在于实体 a 和实体 b 都没有扩展父类,在这种情况下,这可能是解决方案吗?

我还想添加我们拥有的 jpa 配置:

spring.jpa.open-in-view = false
Java PostgreSQL JPA 序列

评论

1赞 Chris 5/26/2023
序列由 JPA 提供程序获取,然后用于插入,因此要弄清楚发生了什么,您必须调试它从序列和插入上的线索中获取的值,以了解为什么它可能会重用一个值(如果序列没有两次返回相同的值, 这应该发生)。尽可能多地打开日志记录,看看是否可以设置一个可靠地重现它的情况。

答: 暂无答案