Java Hibernate消除多对多关系上的记录和传播
我有两个相连的类 病人:Java Hibernate消除多对多关系上的记录和传播,java,hibernate,Java,Hibernate,我有两个相连的类 病人: ... @Entity @Table(schema="public",name="patient") public class Patient{ .. @Id @GeneratedValue(strategy = GenerationType.AUTO) @Column(name = "patient_id") public Integer getId() { return Id; } public void
...
@Entity
@Table(schema="public",name="patient")
public class Patient{
..
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "patient_id")
public Integer getId() {
return Id;
}
public void setId(Integer id) {
Id = id;
}
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
@JoinTable(name = "patient_examination", catalog = "ALTAdb", joinColumns = {
@JoinColumn(name = "patient_id", nullable = false, updatable = false) },
inverseJoinColumns = { @JoinColumn(name = "examination_id",nullable = false, updatable = false) })
public Set<Examination> getExaminations() {
return examinations;
}
public void setExaminations(Set<Examination> examinations) {
this.examinations = examinations;
}
...
我不知道如何修理它
我还试图进行查询以直接访问患者检查,但我不知道它的工作方法请尝试使用CascadeType@ManyToMany。删除它将尽我所知工作 删除之前,请尝试清除患者的检查
...
@Entity
@Table(schema="public",name="examination")
public class Examination{
..
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "examination_id")
public Integer getId() {
return Id;
}
public void setId(Integer id) {
Id = id;
}
@ManyToMany(fetch = FetchType.EAGER, mappedBy = "examinations")
public Set<Patient> getPatients() {
return patients;
}
public void setPatients(Set<Patient> patients) {
this.patients = patients;
}
...
public boolean deleteExamination(int ExaminationId){
boolean deleted=false;
Session session=factory.getCurrentSession();
session.beginTransaction();
Query query =session.createQuery("select m from "+ Examination.class.getName() +" m");
List<Examination> examinations= query.getResultList();
for(Examination e: examinations){
if(e.getId()==ExaminationId){
session.delete(e);
deleted=true;
break;
}
}
session.getTransaction().commit();
return deleted;
}
"Examination" violates the external key constraint "fkexas9b9fwxn0t37wl60a4jcd3" on the table "patient_examination"
Detail: The key (examination_id) = (4) is still referenced by the table "patient_examination"