Längere Texte aller persistenten Klassen werden bei meiner Applikation in eine separate Tabelle gefüllt (Daran kann ich leider auch nichts ändern). Das Ganze wird mit einem <set> gemapt.
Als Fremdschlüssel gebe ich die ID des Objektes an, zu welchem die Texte gehören. Da ich nun aber verschiedene Klassen habe, deren Objekte die längeren Texte in diese Tabelle auslagern, brauche ich einen weiteren Key, der die Klasse unterscheidet.
Beim Speichern eines Objektes muss nun also neben der Objekt-Id auch eine Key für den Typ des Objektes (Klasse) abgelegt werden. Beim Lesen dürfen wiederum nur diese Datensätze aus der text-Tabelle gelesen werden, deren Type und Id übereinstimmen.
Wie realisiere ich das im Mapping bzw. kann ich das überhaupt im Mapping so definieren, dass ich beim Lesen und Schreiben keine weiteren Bedingungen brauche?
Bis anhin sieht es so aus, aber hier fehlt noch der zweite Schlüssel?
Vielen Dank für alle Ideen und Tipps!
Als Fremdschlüssel gebe ich die ID des Objektes an, zu welchem die Texte gehören. Da ich nun aber verschiedene Klassen habe, deren Objekte die längeren Texte in diese Tabelle auslagern, brauche ich einen weiteren Key, der die Klasse unterscheidet.
Beim Speichern eines Objektes muss nun also neben der Objekt-Id auch eine Key für den Typ des Objektes (Klasse) abgelegt werden. Beim Lesen dürfen wiederum nur diese Datensätze aus der text-Tabelle gelesen werden, deren Type und Id übereinstimmen.
Wie realisiere ich das im Mapping bzw. kann ich das überhaupt im Mapping so definieren, dass ich beim Lesen und Schreiben keine weiteren Bedingungen brauche?
Bis anhin sieht es so aus, aber hier fehlt noch der zweite Schlüssel?
Code:
<set name="text" cascade="all" lazy="false">
<key update="true">
<column name="OBJECT_ID" sql-type="smallint"/>
</key>
<one-to-many class="***.text" column/>
</set>
Vielen Dank für alle Ideen und Tipps!