在jpa中批量查询后通知实体回调方法
notifying entity call back methods after bulk query in jpa
jpa实体回调方法是如何工作的?
他们只在执行 em.merge()
和 em.create()
等单个 jpa 操作时收到通知吗?或者如果我使用 em.createQuery().executeUpdate()
他们会收到通知? (也适用于命名查询)
我可以使用它们代替真正的数据库触发器吗?
我没有找到直接的声明,但是从下面的引用中(JPA 2.1 规范,
Chapter 4.10 Bulk Update and Delete Operations
),我知道在 BULK 更新或删除中,不会调用侦听器,因为持久性上下文不会看到更改的实体:
[In a bulk update or bulk delete] The persistence context is not synchronized with the result of the
bulk update or delete.
所以答案是:只有在单个 JPA 操作中才会更改侦听器。
侦听器与数据库触发器不同:JPA 侦听器的一个约束是您不应该更改关系或其中的其他实体(尽管一些 JPA 提供程序可能支持这一点)。
jpa实体回调方法是如何工作的?
他们只在执行 em.merge()
和 em.create()
等单个 jpa 操作时收到通知吗?或者如果我使用 em.createQuery().executeUpdate()
他们会收到通知? (也适用于命名查询)
我可以使用它们代替真正的数据库触发器吗?
我没有找到直接的声明,但是从下面的引用中(JPA 2.1 规范,
Chapter 4.10 Bulk Update and Delete Operations
),我知道在 BULK 更新或删除中,不会调用侦听器,因为持久性上下文不会看到更改的实体:
[In a bulk update or bulk delete] The persistence context is not synchronized with the result of the bulk update or delete.
所以答案是:只有在单个 JPA 操作中才会更改侦听器。
侦听器与数据库触发器不同:JPA 侦听器的一个约束是您不应该更改关系或其中的其他实体(尽管一些 JPA 提供程序可能支持这一点)。