2017-08-27 25 views
1

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)

+1

https://stackoverflow.com/questions/11649249/deleted-object-would-be-re-saved-by-cascade-remove-deleted-object-from-associatコレクションから患者を削除する –

答えて

0

遅延ロードを収集または設定FetchTypeからオブジェクトを削除する必要がありますatients。

関連する問題