Hibernate 为什么重写会更改列名
我使用的是rev监听器的默认实现,正如预期的那样,我的REVINFO表中的列是:revtstmp和rev 然而,当我推翻默认值时,我所做的只是: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”类只定义了两个成员
... 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问题来解决改进问题