Hallo!
Ich experimentiere gerade ein wenig mit Hibernate und bin auf ein Problem gestoßen welches ich noch nicht wirklich lösen konnte. Vielleicht ist das Ganze auch ganz normal, dann würde mich aber das Wieso interessieren
Also ich habe zwei Klassen:
Team.hbm.xml
Player.hbm.xml
Team besitzt wie man sieht ein Set in welchem Objekte der Klasse Player gespeichert sind.
Ein Team erstellen, Player hinzufügen und das ganze in der Datenbank speichern lassen funktioniert ohne Probleme. Das Herausholen und Verändern geht ebenfalls.
Mein Problem ist das Löschen eines Teams mitsamt den Spielern von diesem Team.
Mein erster Versuch war:
Dabei wurde aber nur das Team gelöscht, aber nicht die Player die in diesem Team waren.
Wenn ich aber jetzt zuerst das Team-Objekt per HQL-Select raushole und anschließend lösche werden auch die Player-Objekte in der Datenbank richtig gelöscht.
Mich würde jetzt interessieren warum das so ist und ob das normal ist oder ob ich irgendwo einen Fehler drin habe.
mfg flo
Ich experimentiere gerade ein wenig mit Hibernate und bin auf ein Problem gestoßen welches ich noch nicht wirklich lösen konnte. Vielleicht ist das Ganze auch ganz normal, dann würde mich aber das Wieso interessieren

Also ich habe zwei Klassen:
Java:
public class Player implements Comparable<Player>
{
private Long id;
private String name;
private int age;
private String position;
// ...
}
Java:
public class Team
{
private Long id;
private String name;
private Set<Player> players = new TreeSet<Player>();
// ...
}
Team.hbm.xml
Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class
name="Team"
table="TEAM">
<id
name="id"
column="TEAM_ID">
<generator class="increment"/>
</id>
<property
name="name"
column="TEAM_NAME"/>
<set name="players" table="PLAYER" cascade="all, delete-orphan">
<key column="TEAM_ID" />
<one-to-many class="Player" />
</set>
</class>
</hibernate-mapping>
Player.hbm.xml
Code:
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class
name="Player"
table="PLAYER">
<id
name="id"
column="PLAYER_ID">
<generator class="increment"/>
</id>
<property
name="name"
column="PLAYER_NAME"/>
<property
name="age"
column="PLAYER_AGE"/>
<property
name="position"
column="PLAYER_POSITION"/>
</class>
</hibernate-mapping>
Ein Team erstellen, Player hinzufügen und das ganze in der Datenbank speichern lassen funktioniert ohne Probleme. Das Herausholen und Verändern geht ebenfalls.
Mein Problem ist das Löschen eines Teams mitsamt den Spielern von diesem Team.
Mein erster Versuch war:
Java:
// [...] Session öffnen
session.createQuery("delete from Team t where t.name='"+teamName+"'").executeUpdate();
Wenn ich aber jetzt zuerst das Team-Objekt per HQL-Select raushole und anschließend lösche werden auch die Player-Objekte in der Datenbank richtig gelöscht.
Mich würde jetzt interessieren warum das so ist und ob das normal ist oder ob ich irgendwo einen Fehler drin habe.
mfg flo