簡體   English   中英

為什么@OneToMany關系中的@Many端需要引用@One端?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM