如何为自身实体添加一对一映射。就像在这个例子中一样。我想为 Person 本身建立父子关系。
@Entity
@Table(name="PERSON")
public class Person {
@Id
@Column(name="personId")
private int id;
@OneToOne
@JoinColumn()
private Person parentPerson;
}
如何为自身实体添加一对一映射。就像在这个例子中一样。我想为 Person 本身建立父子关系。
@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);
}
}
如果这是你的意思..