我正在使用EJBs ...我做了以下工作,我不知道爲什麼注入的EntityManager沒有像預期的那樣工作。EJB + POJO Helpers + EntitiyManager問題
- EJB1在EJB2上調用寫入數據庫的方法。
- 當EJB2返回時EJB1向MDB發送消息。
- MDB調用讀取數據庫並執行一些工作的EJB3。
我的問題是,使用@PersistenceContext注入到所有3個EJB中的EntityManager無法正常工作。在EJB2中調用persist()不會反映在EJB3中注入的EntityManager上。 什麼可能是錯誤的? 希望我讓我的問題清楚。 現在使用容器管理的交易。
這是使用JPA的權利?我不太熟悉JPA,但我懷疑每個EJB都獲得了不同的EntityManager實例。當你調用persist時,你確定它沒有緩存實體並且它在數據庫中被提交?即使實體在數據庫中提交,它可能不會顯示在不同的EntityManager實例中,除非您清除其緩存並重新加載所有實體。 – jthg 2010-11-04 18:12:19
是的,使用JPA。不應該有新的EntityManager實例。使用@PersistenceContext的注入重用相同的EntityManager實例,其生命週期由容器管理。那麼,我相信這會發生什麼,我不是100%肯定的。 – nico 2010-11-04 18:19:33
每個EJB是否都有自己的persistence.xml文件?如果是這樣,那不是說每個EJB都擁有自己的EntityManager實例嗎? – jthg 2010-11-04 19:02:48