- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个使用 Hibernate 的项目。持久化包中映射的所有对象(带有注释)都会在事务方法结束时自动更新(如果修改)。
我想使用 JPA 2.1 中的 CriteraUpdate
执行批量更新,但我需要更改对象以触发 Spring 中的 TransactionalEventListeners
。如果我更改对象,并且不调用任何保存方法,即使我使用了 JPA,hibernate 也会保留每个对象?
此外,我不知道 TransactionalEventListener
是否适用于 JPA 生命周期而不是 Hibernate(我实现了 ApplicationEventPublisherAware
接口(interface))。
最佳答案
如果您使用 JPA 方法进行 orm 操作,我希望您使用 EntityManager 接口(interface)。
这是一个很好的方法,因为您正在与 API 而不是实现(即 Hibernates Session 类)进行交互。EntityManager 在幕后无论如何都会调用 Session 类,并且充当装饰器,因此 Hibernate 正在完成所有工作。
如果您的 spring 事务 bean 已正确配置为与 Hibernate 的 SessionFactory 一起使用,那么监听器应该捕获事件。
我唯一能想到的是,当触发批量操作时,JPA 的 PersistenceContext 被省略,而不是单个实体 dml 操作和查询。一切仍然围绕着事务,因此,应该再次调用监听器。
为了确保万无一失,请按照规范建议将此标志放置在 @TransactionalEventListener 上,以防不存在事务:
If the event is not published within the boundaries of a managed transaction, the event is discarded unless the fallbackExecution() flag is explicitly set.
关于java - JPA的批量更新触发TransactionalEventListener?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41555501/
我正在尝试使用 @TransactionalEventListener 监听事件,但即使在整个事务结束之前该事件也会被监听。即使该方法抛出异常,也会监听该事件。 这是我正在尝试做的示例代码 @Comp
我想使用@TransactionalEventListener来接收回滚事件后,但是@TransactionalEventListener似乎可以接收事务方法中的所有事件。 听众: @Slf4j @C
我有一个服务和两个具有 BEFORE_COMMIT 阶段的 TransactionalEventListeners,一个监听 EventA,另一个监听 EventB。服务发布 EventA -> Ev
我正在从事 spring boot 应用程序的事件驱动设计。 代码由以下文件组成: Spring boot:ApplicationEvent 文件,即 MyBusinessEvent.{java @D
基于一篇文章,Better application events in Spring Framework 4.2 ,我设置了所有相关的类。我的大部分代码都可以正常工作,但在监听器的方法中出现异常。 C
我想在 TransactionPhase.AFTER_COMPLETION 之后但在 Async 模式下做一些事情。问题是在当前的实现中,它以同步模式运行,我怎样才能使它异步? @Transactio
我有一个奇怪的问题,涉及 @TransactionalEventListener 无法正确触发或在由另一个 @TransactionalEventListener 触发时出现预期行为。 一般流程是:
我是一名优秀的程序员,十分优秀!