【问题标题】:Hibernate orphan removal loggingHibernate 孤儿删除日志
【发布时间】:2019-09-13 11:13:37
【问题描述】:

我正在尝试记录我的应用程序中实体的每一次更改(deleteupdate),我在服务层中执行了这些更改。

示例:

我有实体公司,其中包含孤儿 removal = true 的员工列表。 当我删除公司时 - 应用日志“公司 XX 已删除” - 公司及其员工都被删除。

问题是我错过了像Company XX removed和“Employee XX removed”或Employees [XX, YY, AA] removed这样的日志> 因为它们是由休眠本身删除的,而不是通过我的应用程序的显式调用。

有什么方法可以为通过孤立删除删除的实体设置日志记录?

【问题讨论】:

  • 如果您手头有Company 实例,您可能还有一个员工列表作为公司中的字段。使用它,因为我猜所有员工都被删除了

标签: java spring hibernate slf4j


【解决方案1】:

您需要的是Hibernate even listeners。您应该为 updatedelete 操作实现侦听器。它将允许您自动记录所有更改,无论原因如何(即使它是由孤立删除引起的)。

鉴于您描述的场景,我建议您这样做,而不管这些孤儿删除问题如何。

你有几个选择:

  1. 手动实现监听器。请看相关帖子How to replicate INSERT/UPDATE/DELETE statements using JPA and Hibernate
  2. 使用回调注解@PostUpdate@PostDelete。请参阅休眠文档Example of specifying JPA callbacks

【讨论】:

    猜你喜欢
    • 2012-08-16
    • 1970-01-01
    • 2011-10-20
    • 2012-09-16
    • 1970-01-01
    • 1970-01-01
    • 2011-01-02
    • 2012-10-22
    • 2012-02-07
    相关资源
    最近更新 更多