Criteria: zwei criteria Objekte "oder-verknüpfen"?

RoCMe

Erfahrenes Mitglied
Hi!

Ich habe eine allgemeine Entität SuperEntity, von der drei weitere Entitäten (ChildEntity1, ChildEntity2, ChildEntity3) erben. Jetzt will ich eine Suche implementieren, wobei der user unter anderem auswählen können soll, von welchem "Typ" die Ergebnise sein sollen. Der einfachste Fall ist wohl "alle" - dann genügt ein

Code:
session.createCriteria(SuperEntity.class);

Auch eine einzelne Auswahl der Kinder ist nicht weiter schwierig, man ersetze einfach das SuperEntity durch die jeweils gesuchte Klasse.

Schwierig wird es erst, wenn eine Mehrfachauswahl möglich sein soll: Wie kann ich denn 2 Klassen angeben, also so eine Art "union" durchführen?

Noch mal umgangssprachlich formuliert, was ich gerade suche: Gib mir alle Objekte vom Typ1 und Typ2, aber nicht die von Typ 3. Oder halt eine andere der 3 möglichen Kombinationen.

Eine erste Idee war, getrennte Abfragen fuer jeden Typ durchzufuehren und anschließend die Ergebnisse in einer Liste zusammenzufassen. Damit würde ich mir aber das Paging kaputtmachen, das mit limit- und offset- Funktionen der Datenbank implementiert ist...

Ein anderer (verzweifelter) Ansatz war, eine weitere Klassenschicht einzufuehren: ChildEntity1 und ChildEntity2 erben dann von einer Klasse CombinedChildren1And2 oder so ähnlich, die widerum von SuperEntity erbt. Dann wäre es möglich, nach dieser mittleren Klasse zu suchen.
Aber dieser Ansatz skaliert mal so überhaupt nicht, und außerdem will ich eigentlich keine Klassen erstellen, die nur fuer die Datenbankabfrage relevant sind...)

Im Prinzip suche ich also eine Möglichkeit, 2 Criteria Objekte zu erzeugen und mit einer Oder Verknüpfung zu versehen. Sowas habe ich aber leider nicht finden können... Habt ihr da eine Idee?

Gruß,

RoCMe
 

Neue Beiträge

Zurück