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

时间:2012-03-24 21:09:28

标签: 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, Operation>();

我的GUI应用程序通过EJB检索此客户,然后更新客户和/或其操作。问题在于,每当遍历operationMap集合时,都会创建Operation个实体的新代理,这会为GUI组件带来问题。有些仍然绑定到旧代理,而有些则绑定到新代理。

您如何解决此问题?尝试只遍历operationMap一次?有没有办法以某种方式限制新代理的创建?

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

1 个答案:

答案 0 :(得分:0)

这实际上是我的托管bean中的一个错误。偶然调用一个方法,即使在初始页面加载后也会获取Customer实体,因此每次都会创建新的分离Customer实体。