【发布时间】: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