0

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

谢谢您的帮助

4

1 回答 1

0

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

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

于 2012-07-25T13:57:36.807 回答