![](/img/trans.png)
[英]How to set null to foreign key column in OneToMany relationship, Hibernate
[英]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批注來代替所有者,我應該怎么做?
在您的情況下,您不需要它,因為您具有雙向關系。 僅當您具有從Person
到Event
的單向@OneToMany
關系時,這才有意義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.