EclipseLink-双向OneToMany关系
假设我有两个实体:
@Entitypublic 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;
}
...
}
然后,我要保留“客户”实体,然后,参照先前添加的“客户”保留“订单”实体。当我从数据库中检索此客户并调用getOrders时,它将返回空集。这是正常行为吗?如果是,当我添加新的Order实体时,我该怎么做以自动刷新此集合?
回答:
Jpa不会为您维护关系,因此应用程序需要设置双向关系的两端,以使它们与数据库保持同步。当您设置了order->
customer关系时,将订单添加到订单列表中,如果客户已分离,则将其合并以收集对集合的更改。
否则,您将需要在交易后使用em.refresh或带有刷新查询提示的查询来显式刷新,或者从缓存中逐出客户。无论哪种方式,都需要通过仅维护关系的两侧来轻松避免数据库命中。
以上是 EclipseLink-双向OneToMany关系 的全部内容, 来源链接: utcz.com/qa/407139.html