Hi,
ich habe ein Problem mit den Cascades in Hibernate. Bei meinem letzten Projekt habe ich versucht in die Annotations Cascades für das löschen von Objekten zu definieren.
Beispiel:
Note * <- -> 1 Appointment
Ich wollte die Cascades so definieren, dass wenn ich das Appointment lösche, automatisch alle Notes gelöscht werden.
Habe dann aber im offiziellen Hibernateforum gelsen, dass von den DELETE-Cascades abgeraten wird. Bei komplexeren Problemen sollte das "individuell" im Code gelöst werden. Habe ich drauf gehört und es folgendermaßen implementiert:
Meine Frage nun: Was macht für euch mehr Sinn? Cascade oder selbst implementieren?
Gruß
Markus
ich habe ein Problem mit den Cascades in Hibernate. Bei meinem letzten Projekt habe ich versucht in die Annotations Cascades für das löschen von Objekten zu definieren.
Beispiel:
Note * <- -> 1 Appointment
Code:
@OneToMany (mappedBy = "Appointment", fetch = FetchType.EAGER)
@Cascade(value=org.hibernate.annotations.CascadeType.DELETE_ORPHAN)
@JoinColumn(name="FK_ID_APPOINTMENT")
private Set<Note> Notes;
Ich wollte die Cascades so definieren, dass wenn ich das Appointment lösche, automatisch alle Notes gelöscht werden.
Habe dann aber im offiziellen Hibernateforum gelsen, dass von den DELETE-Cascades abgeraten wird. Bei komplexeren Problemen sollte das "individuell" im Code gelöst werden. Habe ich drauf gehört und es folgendermaßen implementiert:
Code:
public boolean del(int pos) {
Appointment app = this.get(pos); //in einer abstrakten Hibernate-Manager Klasse definiert
Set<Note> notes = app.getNotes();
for (Iterator<Note> i = notes.iterator(); i.hasNext();) {
Note note = (Note)i.next();
super.delHibernateEntity(note, Note.class); //in einer abstrakten Hibernate-Manager Klasse definiert
System.out.println(note.getID());
}
app.setAttender_User(new HashSet<User>());
this.update(app); //in einer abstrakten Hibernate-Manager Klasse definiert
return super.delHibernateEntity(app, Appointment.class); //in einer abstrakten Hibernate-Manager Klasse definiert
}
Meine Frage nun: Was macht für euch mehr Sinn? Cascade oder selbst implementieren?
Gruß
Markus