[英]Composite primary key and ManyToOne hibernate
我正在學習 Hibernate,並且正在嘗試使映射工作。 我的實體如下
部門:
@Entity
public class Department {
@Id
@GeneratedValue
private Integer id;
private String name;
private String hqLocation;
// getters and setters omitted for brevity
}
工人編號:
@Embeddable
public class WorkerId implements Serializable {
private Integer workerId;
private Integer deptId;
// getters and setters omitted for brevity
}
工人:
@Entity
public class Worker {
@EmbeddedId
private WorkerId id;
private String name;
private Integer age;
// How to make @ManyToOne mapping work?
private Department department;
// getters and setters omitted for brevity
}
問題:如何使@ManyToOne
on field private Department department;
工作? 只需添加注釋結果private Department department;
作為null
。
真正的問題是,哪個實體應該是關系的所有者? 你想映射雙向還是單向?
這是雙向示例
@OneToMany(
fetch = FetchType.EAGER,
mappedBy = "department",
orphanRemoval = true,
cascade = CascadeType.ALL)
private List<Worker> workers;
@JoinColumn(name = "department_id", nullable = false)
@ManyToOne(targetEntity = Department.class, fetch = FetchType.LAZY)
private Department department;
獲取類型是可選的,取決於用例
我認為您想使用“派生身份”; 所以你應該像這樣制作Worker.department
:
@Entity
public class Worker {
@EmbeddedId
private WorkerId id;
private String name;
private Integer age;
@MapsId("deptId")
private Department department;
// getters and setters omitted for brevity
}
JPA 2.2 規范的第 2.4.1 節討論了派生的身份(帶有示例)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.