spring - Hibernate Envers:如何捕获谁删除了审计表中的实体
问题描述
我正在hibernate-envers
使用spring
. 一切正常,除了当我删除一个实体时,它不会更改审计表updated_by
和updated_date
内部的值,而是将实体完全保存为之前(只是复制)之后的实体spring.jpa.properties.org.hibernate.envers.store_data_at_delete=true
。
我已经尝试注册 listener EventType.PRE_DELETE
,但没有帮助。
这是我的更新实体:
@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?
推荐阅读
- javascript - 获取角度12中嵌套集合的数据
- progressive-web-apps - 是否可以在渐进式 Web 应用程序中实现 DRM?
- python - 如何导出用户可以旋转 360 度的交互式 3D 绘图 (.obj/html)(仅限 Python)
- android - 调试flutter app时是否可以深入android框架源码
- javascript - 检测 csv 上的重复数据
- types - Variant 与 ListVariant 类型
- reactjs - 如何计算 React 中有多少映射卡
- chef-infra - 多个厨师节点的一个单一配方,具有各自不同的文件夹路径
- java - java中的CST到UTC转换
- postgresql - Postgresql 在使用限制和偏移时获取不同的计数