在子表中插入外键,每次显示为空

时间:2019-03-09 17:29:53

标签: mysql hibernate spring-boot

我正在使用父级和医学之间的@OnetoMany关系在子表中插入外键。一位父母有很多药,对我来说无效。 我已经对我的问题进行了很多搜索,并且尝试了所有可能的解决方案,但是它不起作用。

父类

@Entity
@Table(name = "patient_domain")
public class Patient implements Serializable {

private static final long serialVersionUID = 1L;

@Id
@GeneratedValue(strategy = GenerationType.AUTO)

@Column(name = "p_id")
private Integer p_id;

@Column(name = "doctor_name")
private String doctor_name;

@Column(name="name")
private String name;

@Column(name="hospital_clinic")
private String hospital_clinic;

@Column(name="date")
private Date date;


@OneToMany(mappedBy = "patient", cascade = CascadeType.ALL)
private List<Medicine> medicines;

患者Bean类

package com.gamification.beans;

import com.gamification.entities.Medicine;

import java.util.Date;
import java.util.List;

public class PatientBean {

private Integer p_id;
private String name;
private String doctor_name;
private Date date;

private List<Medicine> medicines;

public List<Medicine> getMedicines() {
    return medicines;
}

public void setMedicines(List<Medicine> medicines) {
    this.medicines = medicines;
}

public Integer getP_id() {
    return p_id;
}

public void setP_id(Integer p_id) {
    this.p_id = p_id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getDoctor_name() {
    return doctor_name;
}

public void setDoctor_name(String doctor_name) {
    this.doctor_name = doctor_name;
}

public String getHospital_clinic() {
    return hospital_clinic;
}

public void setHospital_clinic(String hospital_clinic) {
    this.hospital_clinic = hospital_clinic;
}

public Date getDate() {
    return date;
}

public void setDate(Date date) {
    this.date = date;
}

private String hospital_clinic;

}

医学课

@Entity
@Table(name = "medicine_kit")
public class Medicine implements Serializable {

private static final long serialVersionUID = 1L;


@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "med_id")
private Integer med_id;

@Column(name="med_name")
private String med_name;
@Column(name="med_type")
private String med_type;
@Column(name="med_quantity")
private String med_quantity;


@JsonIgnore
@ManyToOne
@JoinColumn(name = "patient_domain_p_id", nullable = false, 
referencedColumnName = "p_id")
private Patient patient;

MedicineBean

public class MedicineBean {

private Integer med_id;
private  String med_name;
private  String med_type;
private  String med_quantity;

private Integer patientid;

public Integer getPatientid() {
    return patientid;
}

public void setPatientid(Integer patientid) {
    this.patientid = patientid;
}

public Integer getMed_id() {
    return med_id;
}

public void setMed_id(Integer med_id) {
    this.med_id = med_id;
}

public String getMed_name() {
    return med_name;
}

public void setMed_name(String med_name) {
    this.med_name = med_name;
}

public String getMed_type() {
    return med_type;
}

public void setMed_type(String med_type) {
    this.med_type = med_type;
}

public String getMed_quantity() {
    return med_quantity;
}

public void setMed_quantity(String med_quantity) {
    this.med_quantity = med_quantity;
}
}

PatientController

@RequestMapping(method = {RequestMethod.POST})
public ResponseEntity<ApiResponse> createOrUpdateUser(@RequestBody PatientBean patientBean) throws Exception {



    ApiResponse status = new ApiResponse();
    status.setStatus(false);
    status.setMessage("please select record");
    try {
        if(patientBean != null) {

            Patient patient = new Patient();

            List<Medicine> listmedicine=new ArrayList<Medicine>();
            status.setStatus(true);
            if(patientBean.getP_id() != null) {
                patient.setP_id(patientBean.getP_id());
                status.setMessage("Successfully record updated");
            } else {
                status.setMessage("Successfully record created");
            }

            patient.setName(patientBean.getName());
            patient.setDoctor_name(patientBean.getDoctor_name());
            patient.setHospital_clinic(patientBean.getHospital_clinic());
            patient.setDate(CommonUtil.getCurrentTimestamp());


            if(patient.getMedicines().size()>0)
            {
                for (int i=0;i<patient.getMedicines().size();i++)
                {
                    Medicine medicine=new Medicine();
                    medicine.setMed_name(patientBean.getMedicines().get(i).getMed_name());
                    medicine.setMed_quantity(patientBean.getMedicines().get(i).getMed_quantity());
                    medicine.setMed_type(patientBean.getMedicines().get(i).getMed_type());
                    medicine.setPatient(patient);
                    listmedicine.add(medicine);

                }
            }
            patient.setMedicines(listmedicine);
            status.getResponseList().add(patient);
            patienServiceImp.createPatient(patient);
        }


        return new ResponseEntity<ApiResponse>(status, HttpStatus.OK);
    } catch (Exception e) {
        status.setStatus(false);
        status.setMessage("Something went wrong on server");
        MyPrint.println(e.getMessage());
        return new ResponseEntity<ApiResponse>(status, HttpStatus.OK);
    }
}

enter image description here

1 个答案:

答案 0 :(得分:0)

解决了,我犯了一个错误,那就是我没有给病人服药, "patient.setMedicines(patientBean.getMedicines());"只需在我的代码中添加此代码,我的代码即可正常工作。