如何爲自我實體添加一對一映射。就像在這個例子中。我想擁有Person本身的親子關係。如何在休眠狀態下爲自我實體添加@onetoone映射
@Entity
@Table(name="PERSON")
public class Person {
@Id
@Column(name="personId")
private int id;
@OneToOne
@JoinColumn()
private Person parentPerson;
}
如何爲自我實體添加一對一映射。就像在這個例子中。我想擁有Person本身的親子關係。如何在休眠狀態下爲自我實體添加@onetoone映射
@Entity
@Table(name="PERSON")
public class Person {
@Id
@Column(name="personId")
private int id;
@OneToOne
@JoinColumn()
private Person parentPerson;
}
這裏是例如雙向自映射@OneToOne
(我改列名SQL符號)的:
@Entity
@Table(name="PERSON")
public class Person {
@Id
@Column(name="person_id")
private int id;
@OneToOne
@JoinColumn(name = "parent_person_id")
private Person parentPerson;
@OneToOne(mappedBy = "parentPerson")
private Person childPerson;
}
但是,我不明白爲什麼要在這種情況下使用@OneToOne
。
實際上任何人只能有一個家長。我想與自我參照實體建立親子關係。 –
我使用它是這樣的:
@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "PARENT_ID", nullable = true)
private Person parent;
爲了從服務層添加父,你需要已經在數據庫中至少一個Person
。
讓我們假設你做。然後創建一個新人。對於例如爲:
@Transactional
public void createPerson() {
Person parent = //get your parent
Person child = new Person();
if (parent != null) {
child.setParent(parent);
}
}
如果這是你的意思..
無需指定fetch = FetchType.EAGER,因爲默認值已經是EAGER for OneToOne – webyildirim
你已經做到了。怎麼了? –
@PauliusMatulionis是的,我做了,BT我看我的後端MySQL表架構。新字段已創建爲「parentPerson_id」,我如何從我的服務方法中添加它。 –