spring - hibernate 环境 : How to capture who deleted an entity in audit table

标签 spring hibernate spring-data-jpa hibernate-envers

我正在使用 hibernate-enversspring .一切正常,除了当我删除一个实体时,它不会改变 updated_by 的值和 updated_date在审计表中,而是在 spring.jpa.properties.org.hibernate.envers.store_data_at_delete=true 之后完全像之前一样保存实体(只是复制) .

我已经尝试注册监听器 EventType.PRE_DELETE ,但这没有帮助。

这是我的 UpdateEntity:

@LastModifiedBy
@Column(nullable = false)
private Long updatedBy;

@LastModifiedDate
@Column(nullable = false)
private Date updatedDate;

如何通过修改列 updated_by 在审计表中捕获谁删除以及何时删除和 updated_date ?

最佳答案

看起来您正在结合以下功能:审核支持和 Envers。

Envers 记录对您的实体所做的每项更改,包括按照您的配置进行的删除。

审计支持跟踪更新和插入时间戳和用户。
它不适用于删除,因为将无处存储该信息。

如果您想保留组合并使其工作,您需要修改实体(例如将额外标志 deleting 设置为 true),刷新它,甚至可能提交它(我不确定是否有必要) ),然后将其删除。

可能更好的方法是使用自定义修订对象并将所需数据存储在此问题和答案中:Ways to pass additional data to Custom RevisionEntity in Hibernate Envers?

关于spring - hibernate 环境 : How to capture who deleted an entity in audit table,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58833298/

相关文章:

java - 如何在DAO层使用 session 变量?

java - 如何仅在 Spring Security 上对某些 URL 强制使用 https?

java - 使用 JUnit 测试 Controller 和服务的最佳方法是什么?

hibernate - ORA-01400 : Cannot insert null into (TABLE. 列)( hibernate )

database - 如何设计一个与其自身具有多对多关系的表?

java - REST API 自动连接服务的远程或本地实现

java - Hibernate session.update(object) 方法使子对象 transient (在父/子关系中)

java - 如何将JPA查询结果映射到POJO?

java - Spring - 必须至少存在一个 JPA 元模型

java - 如果在 Spring Data JPA 中为 null 或为空,如何在 @Query 中跳过 @Param