比方說,我有兩個實體:的EclipseLink - 雙向一對多關係
@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實體時,我能做些什麼來自動刷新這個集合?
我不得不嘗試接收來自EntityManager的使用em.find一個一對多的關係(......)時,這個問題,但總是收到一個空的列表。我始終保持關係是最新的,但從entitymanager我總是收到一個空列表,我目前使用em.refresh(...)填充。我應該在使用em.find(...)時看到不同的行爲嗎? – Ben
本,你將不得不提供更多的細節,因爲我不知道如何調用em.find()來獲得OneToMany關係。如果關係沒有條目,那麼數據庫也沒有它們,緩存的實體是陳舊的(例如,當你只添加到雙向關係的一側,或者在讀入後更新了不同EntityManager中的實體這一個),或者你的映射不正確。如果em.refresh不能解決問題,那麼可能是數據庫沒有你想象的那樣,或者映射不正確。嘗試在問題中發佈詳細信息 – Chris
克里斯,我意識到我不清楚。對不起。這裏是關於我的問題的一個新問題:http://stackoverflow.com/questions/38760611/eclipselink-not-populating-lazy-onetoone-with-nested-lazy-onetomany-relation – Ben