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

And*_*qua 6 hibernate jpa one-to-one spring-data-jpa

我有一个这样的实体:

@Entity
public class Person {

    @Id
    private Long id;

    private String firstName;

    // Getters and setters
}
Run Code Online (Sandbox Code Playgroud)

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
}
Run Code Online (Sandbox Code Playgroud)

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

我想建立一个@OneToOne关系,我希望idof PersonDetail是of 的主键,PersonDetail但同时它必须是该Person实体(id字段)的外键。

Spring JPA / Hibernate注释是否可能?

非常感谢Andrea

Ish*_*Ish 5

您可以关注此维基: 通过一对一和多对一关系的主键

将您的实体重写PersonDetail为:

@Entity
public class PersonDetail {

    @Id
    private Long id;

    @OneToOne
    @PrimaryKeyJoinColumn
    private Person person;

    private String language;
    private Integer age;

    // Getters and setters
}
Run Code Online (Sandbox Code Playgroud)

  • 为什么要在“PersonDetail”中引入单独的“id”字段? (10认同)