有沒有辦法檢查兩個EntityManagers實例是否代表相同的PersistenceContext?測試兩個PersistenceContexts是否相等
容器可以使用代理來實現EntityManager,所以我不認爲檢查注入的EntityManager的引用並比較它(換句話說做「==」比較)就足以說明它表示相同的PersistenceContext,對吧?
有沒有辦法檢查兩個EntityManagers實例是否代表相同的PersistenceContext?測試兩個PersistenceContexts是否相等
容器可以使用代理來實現EntityManager,所以我不認爲檢查注入的EntityManager的引用並比較它(換句話說做「==」比較)就足以說明它表示相同的PersistenceContext,對吧?
我已經調試的情況下有兩個實體管理者@PersistenceContext
當注射了同一個單位持續背景下,比較entityManager.getDelegate()
它返回供應商的特定標的物相同&都指向同一個實體管理器工廠。
以不同的單位,代表取得&實體經理工廠,兩者不同。
更多可以參考this的帖子。
注意:所使用的環境是Java EE 5,還有其他幾種方法,如getMetaModel()
,unwrap(object)
,getProperties()
等可以提供進一步的信息。
我試着總結一下我能從Glassfish郵件列表,Eclipselink論壇和Nayan Wadekar回覆中得到的信息,併發布它here。
總之:您可以比較未包裝的JPA供應商EntityManager
s,它將爲您提供比應用程序服務器EntityManager
更充足的信息。
其他的方法是檢查交易密鑰,看看你是否用不同的方法使用相同的交易。如果是這樣,那麼這意味着你必須使用相同的PersistenceContext
。
非常感謝您的時間和答案!我開始認爲沒有人對這些東西感興趣:-)我將收集我從其他來源獲得的信息(即Glassfish郵件列表),並將其添加到此處。 –