10
j'ai des objets Hibernate qui ressemble à ceci:HQL et un à plusieurs requêtes
class Player {
List<Item> inventory;
}
class Item {
List<Enchantment> enchantments;
}
class Enchantment {
boolean isSuperiorEnchantment;
}
J'ai besoin de construire une requête HQL qui me revient une liste de tous les joueurs qui ont au moins un élément avec un enchantement sur celui-ci qui a le jeu de drapeau isSuperiorEnchantment
. Je ne peux pas pour la vie de moi trouver un moyen d'exprimer cela en HQL.
Des idées?
Merci, cela a très bien fonctionné. Je devais me rappeler d'ajouter un "select p" à l'avant de celui-ci, mais sinon c'est exactement ce dont j'avais besoin! –
J'apprends juste HQL, mais en SQL normal cela ne fonctionnerait pas - la jointure gauche signifierait que vous obtiendriez des résultats de joueur même s'il n'y a aucun enregistrement correspondant dans l'inventaire et les enchantements. (Je vais continuer à creuser pour obtenir des éclaircissements sur ce point ... J'ai une suspicion "left join" signifie quelque chose de différent dans HQL, ou cette requête ne serait pas très utile). –
@RobWhelan La requête ci-dessus fonctionnerait (avec des ajustements appropriés à la syntaxe, bien sûr) très bien en SQL normal en raison de la condition 'e.isSuperiorEnchantment = 1' qui ne serait pas satisfaite pour les joueurs sans Enchantements puisque' isSuperiorEnchantment' serait retourné comme nul. – ChssPly76