簡體   English   中英

如何在mysql數據庫的spring data jpa中一起使用一對一和一對多的關系

[英]How to use one-one and one -many relationships together in spring data jpa for mysql database

我正在為資源管理工作。 在這個模塊中,我們將有下表

要求

請求編號

no_of_postions

職稱

req_received_time

需求狀態

經驗

技能

地點

資源

資源編號

姓名

經驗

技能

地點

地位

可用的

請求 ID(fk)

需求或資源可以獨立創建。我們有匹配屏幕,用戶可以在其中映射與需求匹配的資源(匹配標准將是兩個表中的技能和經驗)。 一旦用戶選擇並保存需求,資源的狀態應該會改變。 每個資源都有狀態[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 實現這一點以及如何維護關系。

我試過這種方式

資源.java

@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

}

資源.java

@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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM