Java 测试两个PersistenceContext是否相等
是否有方法检查两个EntityManager实例是否代表相同的PersistenceContext?Java 测试两个PersistenceContext是否相等,java,jpa-2.0,java-ee-6,equality,Java,Jpa 2.0,Java Ee 6,Equality,是否有方法检查两个EntityManager实例是否代表相同的PersistenceContext? 容器可以使用代理来实现EntityManager,所以我不认为检查注入的EntityManager的引用并进行比较(换句话说,进行“==”比较)就足以说明它代表相同的PersistenceContext,对吗?我已经用两个实体管理器用@PersistenceContext 当使用相同的单元注入持久上下文时,比较返回特定于供应商的底层对象的entityManager.getDelegate()是
容器可以使用代理来实现EntityManager,所以我不认为检查注入的EntityManager的引用并进行比较(换句话说,进行“==”比较)就足以说明它代表相同的PersistenceContext,对吗?我已经用两个实体管理器用
@PersistenceContext
- 当使用相同的单元注入持久上下文时,比较返回特定于供应商的底层对象的
是相同的&这两个对象都指向相同的entityManager工厂entityManager.getDelegate()
- 对于不同的单位,代表获得的是实体经理工厂,两者都是不同的
注意:使用的环境是Java EE 5,还有其他几种方法,如
getMetaModel()
,unwrap(object)
,getProperties()
等,可以提供进一步的信息 我试图总结从Glassfish邮件列表、Eclipselink论坛和Nayan Wadekar回复中获得的信息,并将其发布
简而言之:您可以比较未包装的JPA提供程序EntityManager
s,这将比应用程序服务器EntityManager
提供更充分的信息另一种方法是检查事务密钥,看看您是否在不同的方法中使用相同的事务。如果是这样,那么这意味着您必须使用相同的
PersistenceContext
非常感谢您的时间和回答!我开始认为没有人对这些东西感兴趣:-)我将收集从其他来源(如Glassfish邮件列表)获得的信息,并将其添加到这里。