【发布时间】:2017-09-09 20:21:41
【问题描述】:
我想观察一个实体何时被保存或删除,以便我可以执行与该实体相关的其他活动。我以为我过去没有在实体类本身上使用@EntityListeners 注释就这样做了,因为我的实体侦听器将在服务层而不是模型/数据层中实现。
我能想到的唯一其他方法是在 persistence.xml 中并在那里指定我的侦听器。
还有其他方法吗?
【问题讨论】:
-
有什么用吗? spring.io/blog/2015/02/11/…
-
你可以尝试自己构建一个基于 Spring AOP 的层,或者你也可以查看 [这篇文章])(baeldung.com/database-auditing-jpa) 实现审计的几种方式。
-
@AlanHay 这实际上是我遇到的同一篇文章 - 我以为我的 maven 部门中已经有了 spring starter,但找不到 CreationEvent。我会再试一次,否则,那将是理想的。
-
@andrei-macarie 这正是我试图避免的。我不想让实体类中的侦听器甚至实体在编译时都知道。我希望它是一个进行观察的第三方库。
-
@WalterWhite 我理解你不要试图用审计逻辑污染你的实体的观点。我认为您无法逃避向实体添加多个注释以添加 JPA 映射、审计和任何其他需要添加的内容。我这样说是因为在 JAVA 中,您无法创建可以流畅地表达实体配置的 API - JAVA 没有表达式树的概念。因此,您最好的选择是进入提供商级别。因此,如果您使用的是 JPA + Hibernate,那么您可以在我发给您的文章中查看 Hibernate ENVERS。