Spring Data / JPA PostgreSQL SequenceGenerator和并发访问同一数据库时的重复主键

时间:2016-08-11 11:54:20

标签: spring postgresql jpa spring-data spring-data-jpa

在我的Spring Data / JPA项目中,我使用了ProstgreSQL数据库。

我在cards表上使用了以下映射作为我的JPA实体PK:

@Id
@SequenceGenerator(name = "cards_id_seq", sequenceName = "cards_id_seq", allocationSize = 1)
@GeneratedValue(strategy = GenerationType.AUTO, generator = "cards_id_seq")
private Long id;

一切正常,直到其他一些应用程序或人员不会手动将新记录插入此表中。一旦发生,我的应用程序就会失败并出现以下错误:

Caused by: org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "cards_pkey" Detail: Key (id)=(42) already exists.

当由于PostgreSQL序列对象与数据库中的实际PK ID之间不同步而尝试插入记录时。

我做错了什么以及如何解决这种情况,以便为通过我的应用程序插入的新记录分配正确的ID?

0 个答案:

没有答案