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;

}

...

}

然后,我要保留“客户”实体,然后,参照先前添加的“客户”保留“订单”实体。当我从数据库中检索此客户并调用getOrders时,它将返回空集。这是正常行为吗?如果是,当我添加新的Order实体时,我该怎么做以自动刷新此集合?

回答:

Jpa不会为您维护关系,因此应用程序需要设置双向关系的两端,以使它们与数据库保持同步。当您设置了order->

customer关系时,将订单添加到订单列表中,如果客户已分离,则将其合并以收集对集合的更改。

否则,您将需要在交易后使用em.refresh或带有刷新查询提示的查询来显式刷新,或者从缓存中逐出客户。无论哪种方式,都需要通过仅维护关系的两侧来轻松避免数据库命中。

以上是 EclipseLink-双向OneToMany关系 的全部内容, 来源链接: utcz.com/qa/407139.html

回到顶部