Hallo,
ich habe ein Problem mit Redundanzen in Fremdschlüsseln.
Ich habe einen Bäume von Objekten. Jedes Objekt hat als Schlüssel einen composite-id von zwei Werten: rootID und ID. ID ist dabei nur zusammen mit rootID wirklich eindeutig.
Ich möchte bei den Java-Objekten leicht auf das Eltern-Objekt zugreifen und auf das Root-Objekt (des Baumes).
Beim Root-Objekt ist festgelegt: rootID=ID. "rootID" identifiziert also einen Baum, weil sämtliche Objekte eines Baumes den gleichen Wert von rootID haben.
Wenn ich jetzt ein Parent-Mapping machen muss, möchte ich diese Information nutzen.
<many-to-one name="parent">
<column name="rootID"/>
<column name="ID"/>
</many-to-one>
Ein ähnliches Mapping habe ich für "Root" auch. Nur wird jetzt jedes mal "rootID" mit abgespeichert, obwohl es immer den gleichen Wert hat wie "rootID" vom aktuellen Objekt.
Rein vom DB-Schema müsste ich nur "parentID" speichern. Den Root-Knoten kann ich mir errechnen mit
"SELECT FROM Category root WHERE parent.ID=rootID"
Wie kann jetzt das Mapping für Root und Parent aussehen?
|