早上好,如何在审核表中添加字段?
我需要审核一些表,但我需要找到执行操作的用户。我的被审计单位是:
@Entity
@Table(name ="TableName")
@Audited
@AuditTable("TableNameAuditedLog")
public class MyEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "myId")
private Long id;
@Column(name = "myName")
private String name;
}
查看文档时,我看到了一个示例,一个自定义类将成为我的审核和侦听器,因此我这样做:
@Data
@RevisionEntity(AuditListener.class)
@MappedSuperclass
public class Audit {
@Id
@GeneratedValue
@RevisionNumber
private Long id;
@RevisionTimestamp
private Long timestamp;
@Column(name = "user")
private String user;
}
public class AuditListener implements RevisionListener {
@Override
public void newRevision(Object revisionEntity) {
Audit audit = (Audit) revisionEntity;
audit.setUsuario("user");
}
}
我尝试在实体类中扩展audit类,但jpa有问题,问题是:
Caused by: org.hibernate.MappingException: Unable to find column with logical name: myId in org.hibernate.mapping.Table(TableNameAuditedLog) and its related supertables and secondary tables
我该怎么做?
谢谢大家。
1条答案
按热度按时间pqwbnv8z1#
从审计类中删除mappedsuperclass。您还可以使用audit extend defaultrevisionentity。在audit类中,您只需要自定义字段。
自定义审核修订实体:
和修订侦听器
在我的例子中,我使用securityutils助手获取当前主体(我使用具有额外字段的自定义主体),并根据需要设置auditrevisionentity。有些更改是由quartz作业进行的,因此没有主体,在这种情况下,只设置了启动器。