Я использую спящий режим для аудита своих сущностей. У меня 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
}
и объект аудита, подобный этому:
@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 ??





Я нашел аннотацию в спящем режиме, которая решила эту проблему. Итак, вы можете добавить:
@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
}