我有一个休眠的问题:@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

09-30 09:09