Hallo,
ich bin in einem Projekt eingesetzt wo Hibernate eingesetzt wird. Leider habe ich da keine Plan von und nicht wirklich Zeit mich dort einzuarbeiten. Ich habe jetzt ein großes Problem, unzwar habe ich folgende XML Structur:
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.gt.policyrepository.objects.PRRole" table="PRROLE" > <cache usage="nonstrict-read-write" /> <id name="id" column="ID"> <generator class="sequence"> <param name="sequence">prrole_id_sequence</param> </generator> </id> <property name="name" not-null="true" /> <property name="description" not-null="false" /> <many-to-one name="mandant" column="mandant_id" not-null="false" cascade="none"/> <set name="parentRoles" table="ROLEROLE" cascade="all"> <cache usage="nonstrict-read-write" /> <key column="child_id" not-null="true" /> <many-to-many column="parent_id" class="com.gt.policyrepository.objects.PRRole" /> </set> </class> Wie ihr seht, gibt es hier eine Tabelle mit Kindern und Eltern, also das heißt eine Rolle A kann von einer Rolle B erteben und eine ROlle B kann von A erben.
<set name="parentRoles" table="ROLEROLE" cascade="all"> <cache usage="nonstrict-read-write" /> <key column="child_id" not-null="true" /> <many-to-many column="parent_id" class="com.gt.policyrepository.objects.PRRole" /> </set>
Für die Tabelle ROLEROLE wurde keien KLasse definiert.
Jetzt will ich. wenn ich eine PRRole lösche in der Tabelle ROLEROLE voher alle verknüpfungen zu dieser Rolle gelöscht werden. Also Beispiel:
Rolle A erbt von B Rolle C erbt von A
Dann möchte ich aRolle A löschen, dass heißt ich muss in der Tabelle ROLEROLE ja die Verbindungen löschen wo das child A ist und wo das parent object a ist.
Dies habe ich mit folgender Abfrage versucht.
Delete from PRRole.parentRoles where PRRole.parentRoles.child_id = :id or PRRole.parentRoles.parent_id = :id;
Ich bekomme die Fehlermeldung, dass parentRoles nicht gemappt ist, was ich auch verstehe weil dafür keine Klasse existiert. Und mit Sets kenne ich mich nicht auf.
Wer könnte mir eine Abfrage bauen die mein Problem löst??
Gruß
Alaska
|