【发布时间】:2021-03-14 13:36:03
【问题描述】:
早上好,如何在我的审计表中添加字段?
我需要审计一些表,但我需要获取执行操作的用户。我将被审计的实体是:
@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");
}
}
我尝试在我的 Entity 类中扩展我的 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
我该怎么做?
谢谢大家。
【问题讨论】:
-
您的配置与我在项目中的配置非常相似,但我没有注释
@MappedSuperclass。请检查没有它是否有效。 -
我删除了注释,更正了错误,但我的用户继续在 revinfo 中保存 null
-
我忘记将我的审计类注释为@Entity
标签: java spring-boot hibernate hibernate-envers