【问题标题】:How to fix hibernate.transaction.flush_before_completion issue with JTA transactions in JBOSS EAP 7.2?如何解决 JBOSS EAP 7.2 中 JTA 事务的 hibernate.transaction.flush_before_completion 问题?
【发布时间】:2019-11-03 09:19:50
【问题描述】:

我们最近从 JBOSS EAP 6.4 (JEE 6) 迁移到 JBOSS EAP 7.2 (JEE 8)。在新版本的 EAP 中,我们面临着 CMT 交易的问题。在我们显式添加方法调用 entityManager.flush() 之前,刷新不会起作用。

相同的配置在旧 EAP 服务器中运行良好。新版本的容器在事务提交期间不会刷新 SQL 查询。

我们在 persistence.xml 中设置了以下属性。

<persistence-unit name="ACCOUNT" transaction-type="JTA">
<property name="hibernate.transaction.flush_before_completion"      value="true" />
<property name="hibernate.transaction.auto_close_session"           value="true" />         
<property name="hibernate.transaction.jta.platform" value="org.hibernate.service.jta.platform.internal.JBossAppServerJtaPlatform" />

我们希望容器刷新 sql 查询,我们不想添加手动刷新方法调用。

如果有人遇到此类问题,请帮助我们。我们如何在 EAP 7.2 服务器中解决这个问题?感谢您的调查。

【问题讨论】:

  • 为什么要设置这个?无论如何,在事务提交之前完成刷新
  • 感谢您的回复。我们有 因为它不被推荐。相同的代码现在可以在没有 hibernate.transaction.flush_before_completion 和 的情况下工作
  • 恕我直言,您不需要任何属性
  • 酷。乐意效劳。我添加了我的评论作为答案,如果您能接受它作为正确答案,我将不胜感激。谢谢
  • 实体监听方法在SQL语句执行前后调用。你可以添加一个调用flush的EJB拦截器

标签: hibernate jakarta-ee java-8 jboss


【解决方案1】:

您可以删除所有属性。它们不是必需的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-29
    • 1970-01-01
    • 2020-11-04
    • 1970-01-01
    • 2020-05-21
    • 2021-06-07
    • 2020-04-29
    • 2023-03-28
    相关资源
    最近更新 更多