有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在spring data jpa for mysql数据库中同时使用one和one-many关系

我在资源管理公司工作。在本模块中,我们将有以下表格

要求

要求

没有职位空缺

职位

请求接收时间

需求状况

经历

技巧

地点

资源

残余物

名字

经历

技巧

地点

地位

可用

需求(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实现这一点,以及如何维护这些关系

我试过这种方法

资源。爪哇

@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

}

共 (1) 个答案

  1. # 1 楼答案

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