简体   繁体   English

单向一对一关系

[英]Unidirectional one-to-one relationship

How do I achieve a unidirectional one to one relationship for Person and PersonData? 如何实现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;
}

Using the @OneToOne annotation with the @JoinColumn annotation to specify the primary key of the other entity: @OneToOne注释与@JoinColumn注释一起使用以指定另一个实体的主键:

@OneToOne(fetch=FetchType.LAZY)
@JoinColumn(name="personId")
private PersonData data;

You can use @PrimaryKeyJoinColumn to have shared primary key in PersonData Table. 您可以使用@PrimaryKeyJoinColumn在PersonData表中共享主键。

@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;
}

For more details: 更多细节:

https://github.com/abhilekhsingh041992/spring-boot-samples/blob/master/jpa/src/main/java/example/springboot/jpa/domain/Person.java https://github.com/abhilekhsingh041992/sp​​ring-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 https://github.com/abhilekhsingh041992/sp​​ring-boot-samples/blob/master/jpa/src/main/java/example/springboot/jpa/domain/PersonData.java

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM