@OneToOne同时将主键作为外键(Spring JPA / Hibernate)

时间:2017-10-05 18:41:22

标签: hibernate jpa spring-data-jpa one-to-one

我有一个这样的实体:

@Entity
public class Person {

    @Id
    private Long id;

    private String firstName;

    // Getters and setters
}

id不是自动生成的,而是由用户决定的。

我有第二个这样的实体:

@Entity
public class PersonDetail {

    @Id
    @OneToOne
    private Long id; // should be referred to id of Person entity
    // or maybe private Person person; ???

    private String language;
    private Integer age;

    // Getters and setters
}

同样在第二个实体中,id不会自动生成。

我想建立@OneToOne关系,我希望id的{​​{1}}是PersonDetail的主键,但同时必须是PersonDetail实体(Person字段)的外键。

是否可以使用Spring JPA / Hibernate注释?

非常感谢, 安德烈

1 个答案:

答案 0 :(得分:4)

你可以关注这个wiki: Primary Keys through OneToOne and ManyToOne Relationships

将您的PersonDetail实体重写为:

@Entity
public class PersonDetail {

    @Id
    private Long id;

    @OneToOne
    @PrimaryKeyJoinColumn
    private Person person;

    private String language;
    private Integer age;

    // Getters and setters
}