如何自定义hibernate @ElementCollection envers审计表名?

时间:2017-03-24 08:49:25

标签: java hibernate-envers

我目前正在使用 Hibernate& Envers版本5.2.9.Final 。我想对集合和审核表使用 @ElementCollection 自定义表名

到目前为止,我所知道的是修改默认表名称有多种注释可供使用:对于实体本身,有注释@Table和@SecondaryTable以及相应的envers注释@AuditTable和@SecondaryAuditTable。要更改元素集合的表名,可以使用@CollectionTable注释。到目前为止,我还没有找到相应的envers注释。所以我的问题是:

如何更改hibernate @ElementCollection envers审计表的名称?

其他信息

hibernate envers ticket which tracks the adding of auditing support元素集合中,2013年回答了同样的问题,但没有回答。

代码段,以使我的设置清晰:

@Entity
@Table(name = "\"user\"")
@SecondaryTable(name = "\"user_secondary\"")
@Audited
@AuditTable("\"user_audit\"")
@SecondaryAuditTable(secondaryTableName = "user_secondary",
        secondaryAuditTableName = "\"user_secondary_audit\"")
public class User {

    // ... stuff like id and other fields ...

    @ElementCollection
    @CollectionTable(name = "\"user_references\"")
    private Map<String, Long> references = new HashMap<>();
    // TODO FIXME how to get a custom name for the audit table?

    // ... more stuff like getters and setters
}

Hibernate按预期生成所有表格,但收集审核表名为&#39; user_references_AUD&#39; ,而我希望获取名称 &#39; user_references_audit&#39; 与其他表格一样。

我也了解影响审核表前缀或后缀的全局设置,但这只是我用例的最后手段。

更新

根据建议,我向Hibernate JIRA添加了feature request

1 个答案:

答案 0 :(得分:0)

这是因为Envers没有@CollectionTable的补充。

欢迎您添加JIRA,请求我们添加补充注释,我可以查看添加功能所需的内容。只是一目了然,它不应该需要太多,因为它只需要提供给集合中间实体生成的Envers实体表名。