java JPA序列生成器生成意外的ID
当我试图创建实体时
getEntityManager().persist(entity);
下面我有个例外
Internal Exception: org.postgresql.util.PSQLException: ERROR: duplicate key value violates unique constraint "pkproperty"
Detail: Key (id)=(191375) already exists.
我无法理解它从何处获取这个ID值。在我执行实体创建之前,我的数据库中只有一个序列,它的值是191418
此实体的ID描述为
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq_id")
@Basic(optional = false)
@Column(name = "id")
private Long id;
在数据库中,我已经创建了序列seq_id
是否有可以使用的默认序列?如果是,我如何检查它的值
# 1 楼答案
JPA中的序列分配集必须与数据库中使用的分配大小匹配,否则在分配过程中会出现不匹配。尝试在SequenceGenerator定义中指定allocationSize=1:
@SequenceGenerator(name=“seq_id”,allocationSize=1)
# 2 楼答案
您可以不按顺序执行相同的操作,请参阅下面的代码。您的pk列应该是自动递增的,并且自动递增应该从191418开始