I have a hibernate question: what's the difference between @AuditTable and @AuditJoinTable and what are the use cases for each of these?
答案 0 :(得分:1)
@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