Hallo,
ich habe eine Tabelle, die für ziemlich viel Verschiedenes missbraucht wird.
Es gibt u.a. folgende Spalten:
PK (int): selbsterklärend
CODE (int): ein FK (heißt das so?) bzw. NULL
BESCHREIBUNG (string): selbsterklärend
Da gibt es dann bspw. folgenden Eintrag:
PK = 1234
Code = NULL
Beschreibung = Foobar
Und dann jede Menge Einträge mit:
PK = irgendwas
Code = 1234
Beschreibung = Blablabla
Die interessieren mich.
Aber auch ein paar mit
PK = irgendwas
Code = 5678
Beschreibung = Blubb
Nun möchte ich also alle Zeilen mit Code=1234 haben.
Am besten Fall wäre es sogar, wenn er einmal beim Programmstart so etwas machen würde:
select CODE from TABELLE where BESCHREIBUNG='Foobar';
Zur Not könnte ich die 1234 auch noch per Hand eintragen.
Was aber später funktionieren soll ist, dass beim Speichern des gemappten Objekts automatisch die Spalte CODE auf 1234 gesetzt wird und dass man beim Laden unterscheiden kann, ob es generell kein Objekt mit dem angegebenen PK gibt oder ob es zwar eins gibt, der CODE aber nicht zum angefragten Typ passt.
Am besten auch eine Methode, die
select * from TABELLE where CODE=1234;
ausführt.
Ich bekomme das alles mit (N)Hibernate-Queries hin, aber ich dachte, es gibt vielleicht schon einen fertigen Mechanismus.
Habe gesehen, dass es discriminator und subclass gibt.
Das klangt schon ganz gut, nur sind die Klassen, die die Tabelle verwenden, bei mir nicht verwandt. Es gibt nämlich noch ein paar mehr Spalten und die können bei einem Objekt mit CODE=5678 für etwas völlig anderes stehen (und die Variable soll im Code auch anders heißen) als bei einem mit CODE=1234.
Vielen Dank im Voraus für Hinweise.
|