【问题标题】:JPA, avoiding loading entities every time association is traversedJPA,避免每次遍历关联时加载实体
【发布时间】: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 实体。

标签: java jsf-2 jpa-2.0


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多