当前位置: 首页 > 知识库问答 >
问题:

Hibernate Envers:如何捕获谁删除了审计表中的实体

汤洋
2023-03-14

我使用的hibernate-enversSpring。一切正常,除了当我删除一个实体时,它不会改变审计表中的updated_byupdated_date的值,而是在spring.jpa.properties.org.hibernate.envers.store_data_at_delete=true

我已经尝试注册listenerEventType。PRE_DELETE,但没有帮助。

这是我的最新消息

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

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

如何通过修改列updated\u byupdated\u date,在审核表中记录删除的人和删除的时间?

共有1个答案

谭昱
2023-03-14

看起来您正在结合功能:审计支持和环境。

Envers会记录对实体的所有更改,包括删除(如果按您的配置)。

审核支持跟踪更新并插入时间戳和用户。它不适用于删除,因为没有地方存储这些信息。

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

可能更好的方法是使用自定义修订对象并将所需的数据存储在那里,如本问答中所述:如何将其他数据传递到Hibernate Envers中的自定义修订实体?

 类似资料:
  • 问题内容: 我目前正在使用Hibernate Envers。 如何删除审核表中与我要删除的实体相关的条目?我的实体与其他实体没有任何关系。 我发现必须在自定义侦听器的方法中执行此操作: 我已经阅读了文档,论坛以及许多内容,但我无法弄清楚。也许这是不可能的,我不知道。 有人做过吗? 问题答案: 好吧,对于那些想知道的人,我已经完成了50%。 感谢Hibernate Envers的创建者Adam Wa

  • 我使用以下方法根据某个 where 条件删除一组对象,但实际上删除的对象数可能小于传递的集合。如何获取已删除实体的实际计数 http://docs . spring . io/spring/docs/2.5 . x/API/org/spring framework/ORM/hibernate 3/hibernate template . html # delete all(Java . util

  • 我的项目中有几个类是由Hibernate处理的,有些是由Envers审核的,有些则不是。现在,当我试图保存某个未经审计的实体时,我得到了以下信息: 有些人可能认为我的数据库中没有审计表,但是Envers甚至不应该试图寻找这个表,因为实体没有被审计。我的类看起来像这样: 因此,每个类都包含一个子类列表,其中包含对其父类的引用。这些类都没有用-注释标记,但它们引用了一些已审核的实体。然而,每个引用都用

  • 有什么方法可以捕获“删除级联”事件吗?我在Debezium常见问题解答(在页面底部)中读到: ==为什么在某些情况下我看不到删除事件? 这可能是使用语句造成的。在本例中,数据库https://dev.mysql.com/doc/refman/5.7/en/innodb-and-mysql-replication.html生成的删除事件[不是binlog的一部分],因此Debezium无法捕获。 我

  • 我随时都有一个“用户”表,如果插入、更新或删除了一行,那么我需要在“用户审核”表中插入一行,其中包含所有用户数据和操作列,以记录执行的操作。 我用的是Spring批处理,Spring数据JPA把数据插入用户表 我如何使用SpringDataJPA在SpringBatch中实现这一点,或者JPA/hibernate是否提供了任何实现?

  • 问题内容: 我想使用SQLAlchemy删除表。 由于我要一遍又一遍地进行测试,因此我想删除该表,以便每次都可以从头开始。 到目前为止,我正在使用SQLAlchemy通过engine.execute()方法执行原始SQL : 但是,我想知道是否有一些标准方法可以做到这一点。我能找到的唯一一个是,但是它删除了所有结构,而不仅删除了一个特定的表: 例如,给出这个非常基本的例子。它由一个带有单个表的SQ