при вставке внешнего ключа в дочернюю таблицу каждый раз отображается значение null

#mysql #hibernate #spring-boot

#mysql #переход в спящий режим #весенняя загрузка

Вопрос:

Я вставляю внешний ключ в дочернюю таблицу, используя связь @OneToMany между родительским элементом и лекарством. У одного родителя много лекарств, и он показывает мне null. Я провел много поисков по своей проблеме и перепробовал все возможные решения, но это не работает.

Родительский класс

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

Класс компонента Patient

 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);
    }
}
  

введите описание изображения здесь

Комментарии:

1. пожалуйста, помогите мне!

Ответ №1:

решаемая, я получил ошибку, что я не установил лекарство пациенту, "patient.setMedicines(patientBean.getMedicines());" просто добавьте это в свой код, и мой код работает должным образом.