错误:在 Hibernate Envers 6.4.4.Final 升级后插入审核表期间,重复键值违反唯一约束“revinfo_pkey”

问题描述 投票:0回答:1

将 JDK 从 11 升级到 21,将 Hibernate Envers 升级到 6.4.4.Final 后,在将数据保存到审计表时遇到以下错误:

org.springframework.dao.DataIntegrityViolationException:无法执行语句[错误:重复的键值违反了唯一约束“revinfo_pkey”

我正在使用 @Audited 和 @EntityListeners(AuditingEntityListener.class) 创建审计表。我已经有多个审计表和一个包含现有条目的 rev_info 表。发生错误的原因是插入过程没有附加到 revinfo 表的末尾,而是从头开始,导致间歇性重复键违规。理想情况下,它应该在最后一个条目之后开始插入。

如何解决这个问题?

我尝试进一步升级来解决此问题,但问题仍然存在。我不想清理所有审计表,因为它们包含 rev 列,这些 rev 列是引用 revinfo 表的外键。

我的目标是恢复以前的行为,即 revinfo 表中的新条目遵循最后一个现有条目,而不会导致密钥重复。

java postgresql spring-boot hibernate hibernate-envers
1个回答
0
投票

我的审计表中也面临同样的问题。我正在使用 @RevisionEntity(RevisionListenerImpl.class) 创建一个名为 CustomRevision 的表,它扩展了 DefaultRevisionEntity,它是 hibernate envers 提供的映射超类。超类包含我的 CustomRevision 类的 id 属性。我的 CustomRevision 表中已经有 2400 个条目,但是当在我的应用程序上调用 POST api 时,它会引发 409 冲突并出现以下错误:

错误:重复的键值违反了唯一约束“aud_revision_pkey” 详细信息:密钥 (id)=(2401) 已存在。 无法执行语句[错误:重复的键值违反了唯一约束“aud_revision_pkey”'

© www.soinside.com 2019 - 2024. All rights reserved.