有没有办法检查两个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邮件列表),并将其添加到此处。 –