Java JPA,避免每次遍历关联时加载实体
我有一个定义如下的Customer类: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
@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
实体。