J
java-jim
Gast
Hallo,
seit 2 Tagen schlage ich relativer Hibernate-Neuling mich mit folgendem Problem herum, das es ähnlich mehrfach zu finden gibt, aber alle Lösungen hauen bei mir nicht hin.
Ich erzeuge per Hibernate 3 Tabellen: Benutzer, Gruppe und Gruppenzuweisung. Ein Benutzer kann in mehreren Gruppen sein, und eine Gruppe kann mehrere Benutzer haben, also eine ManyToMany-Beziehung, aus der die Verknüpfungstabelle (Gruppenzuweisung) automatisch generiert wird.
Hier die relevanten Codeschnipsel:
Klasse Benutzer:
Klasse Gruppe:
Die Tabellen werden korrekt erzeugt, die Verknüpfungstabelle hat auch die 2 Fremdschlüssel. Wenn ich jetzt eine Gruppe lösche, hätte ich natürlich gerne dass die Verknüpfung in Gruppenzuweisung auch gelöscht wird (natürlich nicht der Benutzer selbst). Das funktioniert aufgrund des Constraints nicht:
java.sql.BatchUpdateException: Cannot delete or update a parent row: a foreign key constraint fails (`alpha`.`gruppenzuweisung`, CONSTRAINT `FKD87A28A8D67F1D8E` FOREIGN KEY (`GruppeID`) REFERENCES `gruppe` (`id`))
Ich benutze Hibernate3 und MySQL 5 mit InnoDB-Tabellen (Die DB selbst ist aber MyISAM. Ich weiß nicht wie ich das ändern könnte oder ob das ein Problem ist).
Ich habe irgendwo gelesen dass die cascade-Anweisung eigentlich überflüssig ist. Ohne geht's aber genauso wenig.
Falls noch weitere Infos fehlen um das Problem zu lösen, immer raus damit. Bin wie gesagt am Verzweifeln
seit 2 Tagen schlage ich relativer Hibernate-Neuling mich mit folgendem Problem herum, das es ähnlich mehrfach zu finden gibt, aber alle Lösungen hauen bei mir nicht hin.
Ich erzeuge per Hibernate 3 Tabellen: Benutzer, Gruppe und Gruppenzuweisung. Ein Benutzer kann in mehreren Gruppen sein, und eine Gruppe kann mehrere Benutzer haben, also eine ManyToMany-Beziehung, aus der die Verknüpfungstabelle (Gruppenzuweisung) automatisch generiert wird.
Hier die relevanten Codeschnipsel:
Klasse Benutzer:
Java:
@ManyToMany(cascade=CascadeType.ALL)
@JoinTable(name = "gruppenzuweisung",
joinColumns = {@JoinColumn(name="BenutzerID")},
inverseJoinColumns = {@JoinColumn(name="GruppeID")}
)
private List<Gruppe> gruppen;
Klasse Gruppe:
Java:
@ManyToMany(mappedBy="gruppen")
private List<Benutzer> benutzer;
Die Tabellen werden korrekt erzeugt, die Verknüpfungstabelle hat auch die 2 Fremdschlüssel. Wenn ich jetzt eine Gruppe lösche, hätte ich natürlich gerne dass die Verknüpfung in Gruppenzuweisung auch gelöscht wird (natürlich nicht der Benutzer selbst). Das funktioniert aufgrund des Constraints nicht:
java.sql.BatchUpdateException: Cannot delete or update a parent row: a foreign key constraint fails (`alpha`.`gruppenzuweisung`, CONSTRAINT `FKD87A28A8D67F1D8E` FOREIGN KEY (`GruppeID`) REFERENCES `gruppe` (`id`))
Ich benutze Hibernate3 und MySQL 5 mit InnoDB-Tabellen (Die DB selbst ist aber MyISAM. Ich weiß nicht wie ich das ändern könnte oder ob das ein Problem ist).
Ich habe irgendwo gelesen dass die cascade-Anweisung eigentlich überflüssig ist. Ohne geht's aber genauso wenig.
Falls noch weitere Infos fehlen um das Problem zu lösen, immer raus damit. Bin wie gesagt am Verzweifeln