【发布时间】:2018-06-19 11:15:03
【问题描述】:
我有一个休眠问题:@AuditTable 和 @AuditJoinTable 有什么区别,它们各自的用例是什么?
【问题讨论】:
我有一个休眠问题:@AuditTable 和 @AuditJoinTable 有什么区别,它们各自的用例是什么?
【问题讨论】:
@AuditTable
第 7 章. 生成的表格及其内容
对于每个被审计实体(即,对于每个实体至少包含 一个审计字段),创建一个审计表。默认情况下,审计 表的名称是通过在原始表中添加“_AUD”后缀创建的 名称,但这可以通过指定不同的后缀/前缀来覆盖 (参见第 3 章,配置)或在每个实体的基础上使用 @AuditTable 注释。
审计表有以下字段:
原始实体的 ID(如果使用,则可以多于一列 一个嵌入式或多个 id)
修订号 - 一个整数
修订类型 - 一个小整数
来自原始实体的审核字段
@AuditJoinTable
9.3。 @OneToMany+@JoinColumn
当使用这两个注解映射集合时,Hibernate 不生成连接表。然而,Envers 必须这样做,所以 当您阅读相关实体具有的修订版时 改变了,你不会得到错误的结果。
为了能够命名附加连接表,有一个特殊的 注释:@AuditJoinTable,与 JPA 的语义相似 @JoinTable。
此外,@AuditTable 适用于 @Target(value=TYPE),而 @AuditJoinTable 适用于 @Target(value={FIELD,METHOD})。
@AuditJoinTable : https://docs.jboss.org/hibernate/orm/4.2/javadocs/org/hibernate/envers/AuditJoinTable.html
【讨论】: