![](/img/trans.png)
[英]How to properly get values in OneToMany relationship based on field of “many” side?
[英]Why does the @Many side in a @OneToMany relationship require a reference to the @One side?
我只花了兩個小時就想弄清楚為什么@OneToMany關系中的@Many一側總是包含所有者的null ID值。 我有兩個Hibernate實體:User和Purchase。 一個用戶可以有許多購買,並且購買只能屬於一個用戶。 以下是我的代碼片段
//在實體用戶上
@OneToMany(mappedBy = "user", cascade = CascadeType.ALL)
private Set<Purchase> purchases = new HashSet<Purchase>();
//關於實體購買
@ManyToOne(fetch = FetchType.EAGER)
private User user;
現在,當我將新的購買添加到用戶設置的“購買”時,我意識到用戶的ID不會自動鏈接到相應的購買。 我必須在這里手動調用方法setUser(User user):
//在User類中
Purchase purchase = new Purchase();
purchase.setUser(this);
purchases.add(purchase);
為什么第二行是必需的?
您將需要一個單獨的函數來將用戶鏈接到程序的其他部分。 我不知道程序包含什么,但是請確保您具有getter函數。
您必須提交事務,以便Hibernate可以自動為您填充user
字段。 否則,Hibernate無法知道您的實體何時准備好提交到數據庫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.