jpql sql在同一个事务中

Posted

技术标签:

【中文标题】jpql sql在同一个事务中【英文标题】:jpql sql in the same transaction 【发布时间】:2012-07-25 13:54:32 【问题描述】:

实际上,我在调用存储过程并在同一事务中对数据库进行一些更改时遇到了问题。我正在做的是我使用 jpql 将来自 en EJB (3.0) 的一些数据插入到 oracle 数据库中,然后我使用本机 jpa 查询调用存储过程来对新数据进行一些处理。但问题是,除非我提交事务,否则 PL/SQL 函数看不到更改,然后我进行了我不想做的调用,因为我想将所有更改保留在同一个事务中。所以问题是:有什么方法可以插入我的数据,调用 pl/sql 函数并在此之后提交所有内容(或最终回滚所有更改)?

感谢您的帮助

【问题讨论】:

【参考方案1】:

确保在执行存储过程之前调用entityManager.flush()。否则,持久性上下文可能仍然在内存中有待处理的更改。刷新确保所有挂起的更改都写入数据库。

如果这不起作用,则意味着存储过程使用的事务与 JPA 使用的事务不同。

【讨论】:

是的!冲洗确实解决了问题!但它并没有真正将数据写入数据库,但它使共享当前事务的其他进程可见。因此,即使尚未写入,我的程序也可以看到其他数据。谢谢 它写入数据库。它不会提交事务。

以上是关于jpql sql在同一个事务中的主要内容,如果未能解决你的问题,请参考以下文章

如何编写一个 JPQL 查询来查找此连接中未找到的记录?

JPQL 更新查询如何处理@Version 字段?

SQL中事务有几种?

sql server中的事务是啥意思

SQL 本身中的“提交”语句是事务吗?

SQL优化中的重要概念:事务