2012-07-25 15 views
0

實際上,我正面臨調用存儲過程和在同一事務中對數據庫進行一些更改的問題。我正在做的是,我使用jpql將一些數據從EJB(3.0)插入到oracle數據庫中,並且我使用本地jpa查詢調用存儲過程以使用新數據進行一些處理。但問題是,PL/SQL函數沒有看到變化,除非我提交事務,並且我打電話時我不想這樣做,因爲我想保留同一事務中的所有更改。所以問題是:有什麼方法可以插入我的數據,調用pl/sql函數並在此之後提交所有內容(或者最終回滾所有更改)?jpql sql在同一事務中

感謝你的幫助

回答

0

確保執行存儲過程之前調用entityManager.flush()。否則,持久化上下文可能仍然有未決的內存更改。刷新確保將所有待處理的更改寫入數據庫。

如果這不起作用,那麼這意味着存儲過程使用與JPA使用的不同的事務。

+0

是的!沖洗確實解決了問題!但它並不真正將數據寫入數據庫,但它使共享當前事務的其他進程可見。所以,我的程序可以看到其他數據,即使它尚未寫入。謝謝 – 2012-07-26 10:02:00

+0

它寫入數據庫。它不承諾交易。 – 2012-07-26 10:07:01