gpt4 book ai didi

java - 提交期间的延迟(使用 JPA/JTA)

转载 作者:行者123 更新时间:2023-12-01 04:37:21 28 4
gpt4 key购买 nike

我想请您帮忙解决以下问题。我有方法:

String sql = "INSERT INTO table ...."
Query query = em.createNativeQuery(sql);
query.executeUpdate();
sql = "SELECT max(id) FROM ......";
query = em.createNativeQuery(sql);
Integer importId = ((BigDecimal) query.getSingleResult()).intValue();

for (EndurDealItem item : deal.getItems()) {
String sql2 = "INSERT INTO another_table";
em.createNativeQuery(sql2).executeUpdate();
}

执行后,数据并未提交(大约需要10或15分钟才能提交数据)。有什么方法可以显式提交数据或触发提交吗?是什么导致交易在这么长时间内保持未提交状态?

我们使用nativeQueries的原因是,我们正在某些共享接口(interface)上导出数据,并且我们不再使用这些数据。

我想提一下,该事务是容器管理的(由 Geronimo 管理)。 EntityManager是通过链接创建的:

 @PersistenceContext(unitName = "XXXX", type = PersistenceContextType.TRANSACTION)
private EntityManager em;

最佳答案

显式使用事务提交:

EntityManager em = /* get an entity manager */;
em.getTransaction().begin();
// make some changes
em.getTransaction().commit();

这应该有效。 .begin() 和 .end() 之间的所有操作的执行时间当然还取决于您正在执行的周期、您插入的行数、数据库的位置(网络速度)事项)等等...

关于java - 提交期间的延迟(使用 JPA/JTA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17163870/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com