Как заполнить поля аудита, которые находятся в суперклассе расширяемой сущности Audit? - PullRequest
0 голосов
/ 25 декабря 2018

Я использую hibernate envers для аудита своих сущностей.У меня OfficeEntity вот так:

@Entity
@Audited
@EntityListeners({AuditingEntityListener.class})
@Table(name = "office")
@AuditTable("office_aud")
public class OfficeEntity extends Auditable{

      @Id
      @GeneratedValue(strategy = GenerationType.AUTO)
      @Column(name = "office_id")
      private Long id;

      @Column(name = "office_code")
      private String officeCode;

      @Column(name = "office_name")
      private String OfficeName;

      //getters & setters & constructor 
}

и Auditable entity вроде этого:

@MappedSuperclass
public class Auditable{

      @CreatedBy
      @Column(name = "created_by")
      private String createdBy;

      @CreatedDate
      @Column(name = "created_date")
      private Date createdDate;

      @LastModifiedBy
      @Column(name = "last_modified_by")
      private String lastModifiedBy;

      @LastModifiedDate
      @Column(name = "last_modified_date")
      private Date lastModifiedDate;

      //getters & setters & constructor
}

Кажется, с этой структурой поля аудита не заполняют таблицу office_aud.Так кто-нибудь знает, как я могу заполнить поля аудита в таблице office_aud ??

1 Ответ

0 голосов
/ 25 декабря 2018

Я нашел аннотацию в спящем конверте, которая решила эту проблему.Таким образом, вы можете добавить:

@AuditOverride(forClass = Auditable.class)

в класс дочерней сущности, и поля аудита будут установлены.Дочерняя сущность будет выглядеть так:

@Entity
@Audited
@Table(name = "office")
@AuditOverride(forClass = Auditable.class)
@AuditTable("office_aud")
public class OfficeEntity extends Auditable{

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  @Column(name = "office_id")
  private Long id;

  @Column(name = "office_code")
  private String officeCode;

  @Column(name = "office_name")
  private String OfficeName;

  //getters & setters & constructor 

}

...