Hibernateを使用してデータベースからPatientオブジェクトを削除しようとしているときにタイトルにエラーがあります。ここでorg.hibernate.ObjectDeletedException:削除されたオブジェクトがカスケードによって再保存される:患者オブジェクトの削除中にエラーが発生しました
は私の患者のJavaクラスである:ここ
package com.vivalio.springmvc.model
@Entity
@Table(name = "PATIENT")
@PrimaryKeyJoinColumn(name = "id")
public class Patient extends User implements Serializable {
@ManyToOne
@JoinColumn(name = "docteur_id", referencedColumnName = "id")
private Docteur docteur;
@OneToMany(fetch = FetchType.EAGER, orphanRemoval = true, mappedBy = "patient", cascade = CascadeType.ALL)
@OrderBy("dateCreation desc")
private Set<Consultation> consultations = new HashSet<Consultation>();
public Set<Consultation> getConsultations() {
return consultations;
}
public void setConsultations(Set<Consultation> consultations) {
this.consultations = consultations;
}
public Docteur getDocteur() {
return docteur;
}
public void setDocteur(Docteur docteur) {
this.docteur = docteur;
}
}
は私の相談のクラスです:
@Entity
@Table(name = "CONSULTATION")
public class Consultation implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "CONSID")
private Integer id;
// poid
@NotEmpty
@Column(name = "PARAM1", nullable = false)
private String param1;
// appetit
@NotEmpty
@Column(name = "PARAM2", nullable = false)
private String param2;
// faiblesse
@NotEmpty
@Column(name = "PARAM3", nullable = false)
private String param3;
// douleur
@NotEmpty
@Column(name = "PARAM4", nullable = false)
private String param4;
// boule
@NotEmpty
@Column(name = "PARAM5", nullable = false)
private String param5;
// fievre
@NotEmpty
@Column(name = "PARAM6", nullable = false)
private String param6;
// Commentaire
@NotEmpty
@Column(name = "COMMENTAIRE", nullable = false)
private String commentaire;
@Column(name = "DTCREATION", nullable = true)
private String dateCreation;
@Column(name = "JJCREATION", nullable = true)
private String jjCreation;
@Column(name = "MMCREATION", nullable = true)
private String mmCreation;
@Column(name = "YYCREATION", nullable = true)
private String aaCreation;
@ManyToOne
@JoinColumn(name = "patient_id")
private Patient patient;
public String getParam1() {
return param1;
}
public void setParam1(String param1) {
this.param1 = param1;
}
public String getParam2() {
return param2;
}
public void setParam2(String param2) {
this.param2 = param2;
}
public String getParam3() {
return param3;
}
public void setParam3(String param3) {
this.param3 = param3;
}
public String getParam4() {
return param4;
}
public void setParam4(String param4) {
this.param4 = param4;
}
public String getParam5() {
return param5;
}
public void setParam5(String param5) {
this.param5 = param5;
}
public String getParam6() {
return param6;
}
public void setParam6(String param6) {
this.param6 = param6;
}
public String getDateCreation() {
return dateCreation;
}
public Patient getPatient() {
return patient;
}
public void setPatient(Patient patient) {
this.patient = patient;
}
public void setDateCreation(String dateCreation) {
this.dateCreation = dateCreation;
}
public String getJjCreation() {
return jjCreation;
}
public void setJjCreation(String jjCreation) {
this.jjCreation = jjCreation;
}
public String getMmCreation() {
return mmCreation;
}
public void setMmCreation(String mmCreation) {
this.mmCreation = mmCreation;
}
public String getAaCreation() {
return aaCreation;
}
public void setAaCreation(String aaCreation) {
this.aaCreation = aaCreation;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getCommentaire() {
return commentaire;
}
public void setCommentaire(String commentaire) {
this.commentaire = commentaire;
}
}
以下のコードを実行した後、私はこのエラーが生じています:
@Override
public void deleteBySSO(String sso) {
Criteria crit = createEntityCriteria();
crit.add(Restrictions.eq("ssoId", sso));
Patient user = (Patient) crit.uniqueResult();
delete(user);
}
SEVERE:サーブレット[dispatcher]のServlet.service() のパス[/ vivalio] throw例外[要求の処理に失敗しました。 例外は org.springframework.dao.InvalidDataAccessApiUsageExceptionが削除されました。 オブジェクトはカスケード( の関連付けから削除されたオブジェクトを削除)によって再保存されます。[com.vivalio.springmvc.model.Patient#34]; 例外はorg.hibernate.ObjectDeletedExceptionです:削除されたオブジェクト は、カスケード(削除されたオブジェクトを の関連付けから削除します)によって再保存されます:[com.vivalio.springmvc.model.Patient#34]]ルート付き 原因org.hibernate .ObjectDeletedException:削除されたオブジェクトが (カスケードによって削除されたオブジェクトを削除します) [com.vivalio.springmvc.model.Patient#34] org.hibernate.internal.SessionImpl.forceFlush(SessionImpl.java :1272) でorg.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:187) org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.performSaveOrUで org.hibernate.internal.SessionImpl.fireSaveOrUpdate(SessionImpl.java:684)でpdate org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:90)で(DefaultSaveOrUpdateEventListener.java:114)
https://stackoverflow.com/questions/11649249/deleted-object-would-be-re-saved-by-cascade-remove-deleted-object-from-associatコレクションから患者を削除する –