单向一对一的关系

时间:2016-12-16 23:24:54

标签: database hibernate jpa foreign-key-relationship one-to-one

如何为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;
}

3 个答案:

答案 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;
}

更多详情:

https://github.com/abhilekhsingh041992/spring-boot-samples/blob/master/jpa/src/main/java/example/springboot/jpa/domain/Person.java

https://github.com/abhilekhsingh041992/spring-boot-samples/blob/master/jpa/src/main/java/example/springboot/jpa/domain/PersonData.java

答案 2 :(得分:0)

将 Person 作为 targetEntity 添加到 PersonData 中的 @OneToOne

@OneToOne(targetEntity = Person.class)
private Person person;
相关问题