Hibernate: what's the difference between @AuditTable and @AuditJoinTable

时间:2018-06-19 11:15:04

标签: java hibernate

I have a hibernate question: what's the difference between @AuditTable and @AuditJoinTable and what are the use cases for each of these?

1 个答案:

答案 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

@AuditTable:https://docs.jboss.org/hibernate/orm/4.2/javadocs/org/hibernate/envers/AuditTable.html#annotation_type_required_element_summary