我想创建一个使用JPA的表Person,要求Person应该有一个Person类型的字段来代表一个灵魂伴侣。 人可以有一个灵魂伴侣(另一个人),但不是强制性的。
我对如何进行映射感到非常困惑。我不确定关键字是否可以帮助我。
我想了解什么是最好的方法。 这就是我所做的,但我认为不正确。 有人可以帮助我纠正它,并解释我这种关系应该如何运作?
使用注释的版本
//DEFINE OneToOne Relationships (SELF JOIN-No mandatory)
@Entity class Person {
@Id
private long identificator;
private String name;
@OneToOne(targetEntity=Person.class mappedby="this")
private Person soulmate;
}
使用部署描述符的版本
<persistence-unit-metadata>
<entity-mappings>
<entityclass = “packgagename.Person”>
<attributes>
<id name="identificator"/>
<column name="name"/>
<one-to-one name="soulmate" targetEntity="packgagename.Person" mappedby="this"/>
</attributes>
</entityclass>
</persistence-unit-metadata>
答案 0 :(得分:6)
我认为这应该可以解决问题:
@OneToOne(optional = true)
@JoinColumn(name = "SoulmateId")
private Person soulmate;