实际上,我在调用存储过程并在同一事务中对数据库进行一些更改时遇到问题。我正在做的是我使用jpql将一些数据从EJB(3.0)插入到oracle数据库中,而不是使用本机jpa查询调用存储过程来对新数据进行一些处理。但问题是PL / SQL函数没有看到更改,除非我提交事务,而不是我调用我不想做的事情,因为我想在同一个事务中保留所有更改。所以问题是:有没有办法插入我的数据,调用pl / sql函数并在那之后提交所有内容(或最终回滚所有更改)?
谢谢你的帮助
答案 0 :(得分:0)
确保在执行存储过程之前调用entityManager.flush()
。否则,持久性上下文可能仍会在内存中有待更改。刷新可确保将所有挂起的更改写入数据库。
如果这不起作用,则表示存储过程使用的事务与JPA使用的事务不同。