Ich habe Hibernate Domain-Objekte, die wie folgt aussieht:HQL und One-to-many-Abfragen
class Player {
List<Item> inventory;
}
class Item {
List<Enchantment> enchantments;
}
class Enchantment {
boolean isSuperiorEnchantment;
}
Ich brauche eine HQL-Abfrage zu erstellen, die eine Liste aller Spieler zu mir zurückgibt, die mindestens ein Element haben mit einer Verzauberung darauf, die die isSuperiorEnchantment
Flagge gesetzt hat. Ich kann nicht für das Leben von mir einen Weg finden, dies in HQL auszudrücken.
Irgendwelche Ideen?
Danke, das hat super funktioniert. Ich musste daran denken, ein "select p" an der Vorderseite hinzuzufügen, aber ansonsten war es genau das, was ich brauchte! –
Ich lerne gerade HQL, aber in regulärem SQL würde das nicht funktionieren - der linke Join würde bedeuten, dass du Spielerergebnisse bekommst, selbst wenn es keine passenden Einträge in Inventar und Verzauberungen gibt. (Ich werde weiter nach Klärung suchen ... Ich habe den Verdacht, "linker Beitritt" bedeutet etwas anderes in HQL, oder diese Abfrage würde nicht viel nützen). –
@RobWhelan Die obige Abfrage würde (bei entsprechender Anpassung der Syntax natürlich) in regulärem SQL funktionieren, da die Bedingung 'e.isSuperiorEnchantment = 1' für Spieler ohne Verzauberungen nicht erfüllt wäre, da 'isSuperiorEnchantment' als zurückgegeben würde Null. – ChssPly76