我有一个休眠的问题:@AuditTable和@AuditJoinTable有什么区别,每种用法都有哪些用例?
最佳答案
@审核表
第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
@AuditTable:https://docs.jboss.org/hibernate/orm/4.2/javadocs/org/hibernate/envers/AuditTable.html#annotation_type_required_element_summary