Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 测试两个PersistenceContext是否相等_Java_Jpa 2.0_Java Ee 6_Equality - Fatal编程技术网

Java 测试两个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实例是否代表相同的PersistenceContext?


容器可以使用代理来实现EntityManager,所以我不认为检查注入的EntityManager的引用并进行比较(换句话说,进行“==”比较)就足以说明它代表相同的PersistenceContext,对吗?

我已经用两个实体管理器用
@PersistenceContext

  • 当使用相同的单元注入持久上下文时,比较返回特定于供应商的底层对象的
    entityManager.getDelegate()
    是相同的&这两个对象都指向相同的entityManager工厂

  • 对于不同的单位,代表获得的是实体经理工厂,两者都是不同的

更多信息,请参阅帖子


注意:使用的环境是Java EE 5,还有其他几种方法,如
getMetaModel()
unwrap(object)
getProperties()
等,可以提供进一步的信息

我试图总结从Glassfish邮件列表、Eclipselink论坛和Nayan Wadekar回复中获得的信息,并将其发布

简而言之:您可以比较未包装的JPA提供程序
EntityManager
s,这将比应用程序服务器
EntityManager
提供更充分的信息

另一种方法是检查事务密钥,看看您是否在不同的方法中使用相同的事务。如果是这样,那么这意味着您必须使用相同的
PersistenceContext

非常感谢您的时间和回答!我开始认为没有人对这些东西感兴趣:-)我将收集从其他来源(如Glassfish邮件列表)获得的信息,并将其添加到这里。