[英]How to use one-one and one -many relationships together in spring data jpa for mysql database
我正在為資源管理工作。 在這個模塊中,我們將有下表
需求或資源可以獨立創建。我們有匹配屏幕,用戶可以在其中映射與需求匹配的資源(匹配標准將是兩個表中的技能和經驗)。 一旦用戶選擇並保存需求,資源的狀態應該會改變。 每個資源都有狀態[Available, Shortlisted, In_progress, Background_Verification, On boarded, Rejected]
。 用戶可以根據流程更改資源的狀態。 如果一個資源被拒絕,那么它應該可用於其他需求。 為了為一個需求創建報告,有多少資源被列入候選名單,有多少資源被加入以及有多少資源被拒絕,我們應該維護每個需求和資源狀態。
那么數據應該是這樣的
req_res_status
---------------
resId resId status updatedDate comment
1 1 shortlisted 18/12/19 candidate shortlisted
1 1 Inprogress 19/12/19 Done with one F2F
1 1 Rejected 20/12/19 Rejected in second round - F2F
1 2 shortlisted 18/12/19 candidate shortlisted
1 2 Inprogress 19/12/19 Done with one F2F
1 2 BGV_check 20/12/19 Background verification In progress
1 2 onboarded 01/01/20 Onboarded
2 1 shortlisted 20/12/19 candidate shortlisted
2 1 Inprogress 21/12/19 Done with one F2F
2 1 BGV_check 22/12/19 Background verification In progress
2 1 onboarded 01/01/20 Onboarded
一個需求可以有多個資源,一個資源可以關聯一個需求
如何使用 spring 數據 JPA 實現這一點以及如何維護關系。
我試過這種方式
@Entity
public class Resource implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="res_id")
private int resourceId;
private String location;
private String name;
@Column(name="position")
private String jobTitle;
@Column(name="skills")
private String skill;
private String availability;
private String status;
private Integer experience;
//bi-directional many-to-one association to Requirement
@ManyToOne
@JoinColumn(name="req_fk")
private Requirement requirement;
// Setters & Getters
}
@Entity
@NamedQuery(name="Requirement.findAll", query="SELECT r FROM Requirement r")
public class Requirement implements Serializable {
private static final long serialVersionUID = 1L;
@Id
//@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="req_id")
private String reqNumber;
@Column(name="acknowledge_status")
private String acknowledgeStatus;
@Column(name="acknowledge_time")
private String acknowledgeTime;
private int experience;
@Column(name="no_position")
private int noPositions;
@Column(name="req_recieved_time")
private String reqRecievedTime;
@Column(name="req_skills")
private String skill;
@Column(name="job_title")
private String position;
private String location;
@Column(name = "status")
private String status;
//bi-directional many-to-one association to Resource
@OneToMany(mappedBy="requirement")
private List<Resource> resources;
// setters & getters
}
@Entity
public class Resource implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="res_id")
private int resourceId;
private String location;
private String name;
@Column(name="position")
private String jobTitle;
@Column(name="skills")
private String skill;
private String availability;
private String status;
private Integer experience;
//bi-directional many-to-one association to Requirement
@ManyToOne(fetch = FetchType.LAZY, optional = false)
@JoinColumn(name = "req_fk")
private Requirement requirement;
// Setters & Getters
}
@Entity
@NamedQuery(name="Requirement.findAll", query="SELECT r FROM Requirement r")
public class Requirement implements Serializable {
private static final long serialVersionUID = 1L;
@Id
//@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="req_id")
private String reqNumber;
@Column(name="acknowledge_status")
private String acknowledgeStatus;
@Column(name="acknowledge_time")
private String acknowledgeTime;
private int experience;
@Column(name="no_position")
private int noPositions;
@Column(name="req_recieved_time")
private String reqRecievedTime;
@Column(name="req_skills")
private String skill;
@Column(name="job_title")
private String position;
private String location;
@Column(name = "status")
private String status;
//bi-directional many-to-one association to Resource
@OneToMany(mappedBy = "requirement", cascade = CascadeType.ALL)
private List<Resource> resources;
// setters & getters
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.