Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在SpringDataJPAForMySQL数据库中同时使用一对一和一对多关系_Java_Spring Data Jpa - Fatal编程技术网

Java 如何在SpringDataJPAForMySQL数据库中同时使用一对一和一对多关系

Java 如何在SpringDataJPAForMySQL数据库中同时使用一对一和一对多关系,java,spring-data-jpa,Java,Spring Data Jpa,我在资源管理公司工作。在本模块中,我们将有下表 要求 需求 无职位空缺 职位 请求接收时间 需求状况 经验 技能 位置 资源 剩余物 名称 经验 技能 位置 地位 可获得的 需求ID(fk) 需求或资源可以独立创建。我们有匹配屏幕,用户可以在其中映射与需求匹配的资源(匹配标准将是两个表中的技能和经验)。一旦用户选择并保存需求,资源的状态就应该改变。每个资源都有状态[可用、入围、进行中、背景验证、已登机、已拒绝]。用户可以根据流程更改资源的状态。如果一个资源被拒绝,那么它应该可用于其他需求。为了为

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

要求 需求 无职位空缺 职位 请求接收时间 需求状况 经验 技能 位置 资源 剩余物 名称 经验 技能 位置 地位 可获得的 需求ID(fk) 需求或资源可以独立创建。我们有匹配屏幕,用户可以在其中映射与需求匹配的资源(匹配标准将是两个表中的技能和经验)。一旦用户选择并保存需求,资源的状态就应该改变。每个资源都有状态
[可用、入围、进行中、背景验证、已登机、已拒绝]
。用户可以根据流程更改资源的状态。如果一个资源被拒绝,那么它应该可用于其他需求。为了为一个需求创建报告,我们应该维护每个需求和资源状态,即有多少资源被列入短名单、有多少资源在船上以及有多少资源被拒绝

那么数据应该是这样的

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

我试过这种方法

Resource.java Resource.java
@实体
@NamedQuery(name=“Requirement.findAll”,query=“从需求r中选择r”)
公共类要求实现可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
//@GeneratedValue(策略=GenerationType.IDENTITY)
@列(name=“req\u id”)
私有字符串编号;
@列(name=“确认状态”)
私有字符串确认状态;
@列(name=“确认时间”)
私有字符串确认时间;
私人int经验;
@列(name=“无位置”)
私人职位;
@列(name=“请求接收时间”)
私有字符串ReqReceivedTime;
@列(name=“要求技能”)
私人弦乐技巧;
@列(name=“职务”)
私有字符串位置;
私有字符串位置;
@列(name=“status”)
私有字符串状态;
//与资源的双向多对一关联
@OneToMany(mappedBy=“要求”)
私人名单资源;
//二传手和接球手
}
@实体
公共类资源实现可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
@列(name=“res_id”)
私有资源ID;
私有字符串位置;
私有字符串名称;
@列(name=“position”)
私有字符串职务;
@列(name=“skills”)
私人弦乐技巧;
私有字符串可用性;
私有字符串状态;
私人整数经验;
//需求的双向多对一关联
@manytone(fetch=FetchType.LAZY,可选=false)
@JoinColumn(name=“req_fk”)
私人需求;
//二传手和接球手
}
@实体
@NamedQuery(name=“Requirement.findAll”,query=“从需求r中选择r”)
公共类要求实现可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
//@GeneratedValue(策略=GenerationType.IDENTITY)
@列(name=“req\u id”)
私有字符串编号;
@列(name=“确认状态”)
私有字符串确认状态;
@列(name=“确认时间”)
私有字符串确认时间;
私人int经验;
@列(name=“无位置”)
私人职位;
@列(name=“请求接收时间”)
私有字符串ReqReceivedTime;
@列(name=“要求技能”)
私人弦乐技巧;
@列(name=“职务”)
私有字符串位置;
私有字符串位置;
@列(name=“status”)
私有字符串状态;
//与资源的双向多对一关联
@OneToMany(mappedBy=“requirement”,cascade=CascadeType.ALL)
私人名单资源;
//二传手和接球手
}
@实体
公共类资源实现可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
@GeneratedValue(策略=GenerationType.IDENTITY)
@列(name=“res_id”)
私有资源ID;
私有字符串位置;
私有字符串名称;
@列(name=“position”)
私有字符串职务;
@列(name=“skills”)
私人弦乐技巧;
私有字符串可用性;
私有字符串状态;
私人整数经验;
//需求的双向多对一关联
@manytone(fetch=FetchType.LAZY,可选=false)
@JoinColumn(name=“req_fk”)
私人需求;
//二传手和接球手
}
@实体
@NamedQuery(name=“Requirement.findAll”,query=“从需求r中选择r”)
公共类要求实现可序列化{
私有静态最终长serialVersionUID=1L;
@身份证
//@GeneratedValue(策略=GenerationType.IDENTITY)
@列(name=“req\u id”)
私有字符串编号;
@列(name=“确认状态”)
私有字符串确认状态;
@列(name=“确认时间”)
私有字符串确认时间;
私人int经验;
@列(name=“无位置”)
私人职位;
@列(name=“请求接收时间”)
私有字符串ReqReceivedTime;
@列(name=“要求技能”)
私人弦乐技巧;
@列(name=“职务”)
私有字符串位置;
私有字符串位置;
@列(name=“status”)
私有字符串状态;
//与资源的双向多对一关联
@OneToMany(mappedBy=“requirement”,cascade=CascadeType.ALL)
私人名单资源;
//二传手和接球手
}

这些都在一个表中现在数据在需求中,资源表中。我们应该使用spring data jpa中的注释生成req_res_status表,我不知道如何使用我仍然不知道您有多少个表,您在这里尝试做什么我有两个表1.需求,2。资源。当我们根据需求更改资源的状态时,一条新记录应该被插入到res_req_status表中(尚未创建)。我应该使用spring数据JPA关系创建res_req_status表
@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

}