【发布时间】:2012-03-24 21:09:28
【问题描述】:
我有一个这样定义的客户类:
@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)。
【问题讨论】:
-
我远非 JPA 专家,但它不应该只存在任何实体的副本吗(如果它从多个线程加载多次,ORM 缓存应该返回相同的对象) ?
-
谢谢,事实上你给我指出了正确的方法。一个方法被意外调用,即使在初始页面加载后也获取了
Customer实体,因此每次都会创建新的分离的Customer实体。