[英]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.