编程语言
首页 > 编程语言> > java – EclipseLink – 双向OneToMany关系

java – EclipseLink – 双向OneToMany关系

作者:互联网

假设我有两个实体:

@Entity
public class Customer implements Serializable {
    ...
    @OneToMany(cascade=ALL, mappedBy="customer")
    public Set<Order> getOrders() { 
        return orders; 
    }
    ...
}

@Entity
public class Order implements Serializable {
    ...
    @ManyToOne
    @JoinColumn(name="CUST_ID", nullable=false)
    public Customer getCustomer() { 
        return customer; 
    }
    ...
}

然后,我是持久的Customer实体,之后,Order实体参考之前添加的Customer.
当我从数据库中检索此客户并调用getOrders时,它返回空集.
这是正常的行为吗?如果是,我在添加新订单实体时如何自动刷新此设置?

解决方法:

Jpa不为您维护关系,应用程序需要设置双向关系的两面以使它们与数据库保持同步.在设置order->客户关系时将订单添加到订单列表,如果客户已分离,则将其合并以获取对集合的更改.

否则,您需要在事务之后使用em.refresh或带有刷新查询提示的查询进行明确刷新,或者从缓存中逐出客户.无论哪种方式,它都需要通过维护关系的双方来轻松避免数据库命中.

标签:java,jpa,eclipselink
来源: https://codeday.me/bug/20191009/1875985.html