gpt4 book ai didi

mysql - 恩弗斯 : auto_increment (not PK) column not being audited

转载 作者:行者123 更新时间:2023-11-29 11:28:58 27 4
gpt4 key购买 nike

我正在实现一个 JPA-EJB 解决方案,它使用 Hibernate-Envers 来审核更改。使用 MariaDB 5.5.49。

我有一个表,其中有一个 auto_increment 字段(这不是 PK,它只是另一个字段),我是这样定义的:

@NotNull
@Generated(GenerationTime.INSERT)
@Column(columnDefinition = "integer auto_increment")
private int caseNumber;

我还按照 mysql 的要求为此字段创建了索引和唯一约束。

不知何故,Envers 无法识别该字段,并且不会将 caseNumber 的值存储在试镜表中。正在记录的 insert 语句保存了我实体中除此之外的所有字段。

有谁知道为什么会这样吗?字段定义有问题吗? Envers 与 auto_increment 相处不好吗?

最佳答案

这里的问题是 @Generate@Column 的组合。

@Column 的默认行为是将关联的字段/属性映射为 insertable=true, updatable=true。当您将 @Column@Generate 结合使用时,这会将列注释的行为更改为 insertable=false, updatable=false,因为其目的是该值将由数据库维护。这影响了 Envers 生成的映射,因此您的 caseNumber 字段的值被简单地视为不可插入或可更新。

如 JIRA HHH-10841 中所述,修复方法是简单地检测此用例并确保 Envers 映射保持 insertable=true 状态,以便跟踪更改并将其推送到审核表中的列。

关于mysql - 恩弗斯 : auto_increment (not PK) column not being audited,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37743099/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com