Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.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 JPA,避免每次遍历关联时加载实体_Java_Jsf 2_Jpa 2.0 - Fatal编程技术网

Java JPA,避免每次遍历关联时加载实体

Java JPA,避免每次遍历关联时加载实体,java,jsf-2,jpa-2.0,Java,Jsf 2,Jpa 2.0,我有一个定义如下的Customer类: @Entity public class Customer { //... @OneToMany(mappedBy = "customer", orphanRemoval = true, FetchType.EAGER) @MapKey(name = "name") private Map<String, Operation> operationMap = new HashMap<String, Opera

我有一个定义如下的Customer类:

@Entity
public class Customer {
    //...
    @OneToMany(mappedBy = "customer", orphanRemoval = true, FetchType.EAGER)
    @MapKey(name = "name")
    private Map<String, Operation> operationMap = new HashMap<String, Operation>();
@实体
公共类客户{
//...
@OneToMany(mappedBy=“customer”,orphanRemoving=true,FetchType.EAGER)
@MapKey(name=“name”)
私有映射操作Map=newhashmap();
我的GUI应用程序通过EJB检索该客户,然后更新该客户和/或其操作。问题是,每当遍历
operationMap
集合时,就会创建
Operation
实体的新代理,这会给GUI组件带来问题。有些组件仍然绑定到旧代理,而另一些则绑定到旧代理我必须接受新的代理

您打算如何解决此问题?尝试只遍历一次
operationMap
?是否有办法限制新代理的创建


我正在使用EclipseLink JPA(Glassfish AS)。

这实际上是我的托管bean中的一个bug。一个方法被意外调用,即使在初始页面加载之后也会获取客户实体,因此每次都会创建新的分离的
客户
实体。

我对JPA不是很在行,但它不认为只有任何实体的副本存在吗(如果从多个线程多次加载,ORM缓存应该返回同一个对象)?谢谢,事实上,你给我指出了正确的方法。意外调用了一个方法,即使在初始页面加载之后也获取了
Customer
实体,因此每次都会创建新的分离
Customer
实体。