簡體   English   中英

插入實體時,Hibernate OneToMany關系將外鍵設置為null

[英]Hibernate OneToMany relationship sets foreign key to null when inserting entity

我有兩個實體:Person和Event。 這個想法是,一個人是多個事件的所有者,一個事件只能由一個人擁有。

人員實體代碼段:

@OneToMany(fetch = FetchType.EAGER,cascade=CascadeType.ALL,mappedBy="person")
@JsonIgnore
private List<Event> event;

事件實體的片段:

@ManyToOne(fetch=FetchType.EAGER, cascade={CascadeType.PERSIST, CascadeType.DETACH, CascadeType.MERGE, CascadeType.REFRESH})
@JsonIgnore
private Person person;

當我嘗試插入一個Person並隨后向數據庫中添加一些事件時,Event表中的外鍵始終為null。 這意味着我無法跟蹤事件的“所有者”(這是我的目標)。

此外,如果我想使用@JoinTable批注來代替所有者,我應該怎么做?

任何建議表示贊賞。

可能是您未正確連接實體。 以下偽代碼將向您展示如何連接實體:

Person person = new Person();
Event event1 = new Event();
Event event2 = new Event();

person.getEvents().add(event1);
person.getEvents().add(event2);

event1.setPerson(person);
event2.setPerson(person);

// Start transaction here 
entityManager.persist(person); // this should save also events because of cascade attribute
// commit transaction

此外,如果我想使用@JoinTable批注來代替所有者,我應該怎么做?

在您的情況下,您不需要它,因為您具有雙向關系。 僅當您具有從PersonEvent的單向@OneToMany關系時,這才有意義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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