簡體   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