如何为Person和PersonData实现单向一对一关系?
@Entity
public class Person {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Long id;
// @OneToOne...?
// ...?
private PersonData data;
}
@Entity
public class PersonData {
@Id
private long personId;
}
答案 0 :(得分:0)
将@OneToOne
注释与@JoinColumn
注释一起使用以指定其他实体的主键:
@OneToOne(fetch=FetchType.LAZY)
@JoinColumn(name="personId")
private PersonData data;
答案 1 :(得分:0)
您可以使用@PrimaryKeyJoinColumn
在PersonData Table中拥有共享主键。
@Entity
public class Person implements Serializable {
@Id
@GeneratedValue(strategy= GenerationType.AUTO)
private Long id;
@OneToOne(cascade = CascadeType.PERSIST, mappedBy = "personId")
@PrimaryKeyJoinColumn
private PersonData data;
}
@Entity
public class PersonData implements Serializable {
@Id
@OneToOne(targetEntity = Person.class)
private Long personId;
}
更多详情:
答案 2 :(得分:0)
将 Person 作为 targetEntity
添加到 PersonData 中的 @OneToOne
:
@OneToOne(targetEntity = Person.class)
private Person person;