繁体   English   中英

休眠5,将外键作为主键,单向一对一

[英]hibernate 5, foreign key as primary key, unidirectional one to one

我有两个实体:

第一实体:

@Entity
@Table(name = "first")
public class First {

    @Id
    private Long id;

    // other properties
    // getters & setters

}

第二实体:

@Entity
@Table(name = "second")
public class Second {

    @OneToOne
    @JoinColumn(name = "first_id")
    private First first;

    // other properties
    // getters & setters

}

我想使第二实体中的第一个字段成为主键。

First first = new First()
repository.save(first);

(first.id = 1)必须是

Second second = new Second()
second.setFirst(first); // as primary key
repository.save(second);

(second.first = first)必须是

使用@MapsId并将@Id字段添加到第二个实体:

@Entity
@Table(name = "second")
public class Second {

    @Id
    private Long Id;

    @MapsId
    @OneToOne
    @JoinColumn(name = "first_id")
    private First first;

    // other properties
    // getters & setters

}

请参阅JPA 2规范的第37页:

情况(b):从属实体具有与该关系属性相对应的单个主键属性。 主键属性与父实体的主键具有相同的基本类型。 应用于关系属性的MapsId批注指示主键由关系属性映射。

 @Entity public class MedicalHistory { @Id String id; // overriding not allowed ... // default join column name is overridden @MapsId @JoinColumn(name="FK") @OneToOne Person patient; ... } 

暂无
暂无

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

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