Hibernate 为什么重写会更改列名

Hibernate 为什么重写会更改列名,hibernate,audit,hibernate-envers,Hibernate,Audit,Hibernate Envers,我使用的是rev监听器的默认实现,正如预期的那样,我的REVINFO表中的列是:revtstmp和rev 然而,当我推翻默认值时,我所做的只是: ... MyRevisionEntity extends DefaultRevisionEntity 这些列名被更改为“timestamp”和“id” 有人知道为什么吗 使用envers 4.1.5_最终版本 **编辑** 由于还没有人回答,我将补充更多信息 Adam Warski编写的“DefaultRevisionEntity”类只定义了两个成员

我使用的是rev监听器的默认实现,正如预期的那样,我的REVINFO表中的列是:revtstmp和rev

然而,当我推翻默认值时,我所做的只是:

... MyRevisionEntity extends DefaultRevisionEntity
这些列名被更改为“timestamp”和“id”

有人知道为什么吗

使用envers 4.1.5_最终版本

**编辑** 由于还没有人回答,我将补充更多信息

Adam Warski编写的“DefaultRevisionEntity”类只定义了两个成员: 私有int-id

及 私有长时间戳

因此,我理解,当我扩展该类时,这些将是我应该期望的列名。然而,“令人困惑”的问题是:为什么当我没有扩展默认值时,列是不同的(分别是rev和revtstmp)以及文档中说了什么


谢谢你的帮助

简单的回答是,如果不进行扩展,Envers会使用默认配置,将这些列名硬编码,例如,它们不是来自实体类的元数据。扩展
DefaultRevisionEntity
时,Envers默认使用标准ORM命名策略

更严格地说,
RevisionInfoConfiguration
是罪魁祸首

作为Envers引导的一部分,调用此类的
#configure()
方法,并在定义的实体中搜索自定义修订实体实现。如果检测到实现,Envers基本上会像其他实体一样映射该类

但如果未检测到自定义实现,则调用
generateDefaultRevisionInfoXmlMapping
,它将自动构建适当的XML结构,该结构使用硬编码的列名作为
@RevisionNumber
@RevisionTimestamp
注释字段;因此,您将获得名为
REV
REVTSTMP
的列

我已经注册了一个JIRA问题来解决改进问题