Comment voulez-vous créer une requête Distinct dans les requêtes HQL
Est-il un moyen de créer un autre requête HQL. Soit en utilisant le "distinct" mot-clé ou d'une autre méthode. Je ne suis pas sûr si distinct est valide clétage pour HQL, mais je suis à la recherche pour le HQL équivalent du mot clé SQL "distinct".
Vous devez vous connecter pour publier un commentaire.
Voici un extrait de hql que nous utilisons. (Les noms ont été changés pour protéger les identités)
Il est intéressant de noter que la
distinct
mot-clé dans les requêtes HQL ne correspondent pas directement à ladistinct
mot-clé dans SQL.Si vous utilisez le
distinct
mot-clé dans les requêtes HQL, alors, parfois, Hibernate utilisera ledistinct
mot clé SQL, mais dans certaines situations, il utilisera un résultat transformateur pour produire des résultats distincts. Par exemple, lorsque vous utilisez une jointure externe comme ceci:Il n'est pas possible de filtrer les doublons au niveau SQL dans ce cas, Hibernate utilise un
ResultTransformer
pour filtrer les doublons après la requête SQL a été exécutée.faire quelque chose comme cela la prochaine fois
Vous pouvez également utiliser
Criteria.DISTINCT_ROOT_ENTITY
avec Hibernate requête HQL ainsi.Exemple:
J'ai eu quelques problèmes avec raison les transformateurs combinés avec des requêtes HQL. Quand j'ai essayé
il ne fonctionne pas. J'ai dû transformer manuellement comme ceci:
Avec les Critères de l'API transformateurs a très bien fonctionné.
Ma requête principale était comme ça dans le modèle:
Et j'étais toujours pas à obtenir ce que je considère "distincte" des résultats. Ils étaient juste distinct fondé sur une clé primaire combinaison sur la table.
Donc dans le
DaoImpl
j'ai ajouté un changement de ligne et a fini par avoir le "distincte" de retour que je voulais. Un exemple serait plutôt de voir 00 quatre fois maintenant, je viens de voir ça une fois. Voici le code que j'ai ajouté à laDaoImpl
:J'espère que cela vous a aidé! Encore une fois, cela peut ne fonctionne que si vous suivez les pratiques de codage que la mise en œuvre du service, dao, et le modèle type de projet.
Supposons que vous avez un Client entités mappées à CUSTOMER_INFORMATION table et vous souhaitez obtenir la liste des différents prénom du client. Vous pouvez utiliser l'extrait de code ci-dessous pour obtenir le même.
J'espère que cela aide. Nous sommes donc ici en utilisant le groupe de par la place de l'utilisation de mot clé distinct.
Précédemment j'ai trouvé la difficulté à utiliser un mot-clé distinct quand je veux l'appliquer à plusieurs colonnes. Par exemple je veux avoir la liste des différents firstName, lastName puis de les regrouper par serait tout simplement le travail. J'ai eu de la difficulté dans l'utilisation de distinct dans ce cas.
Vous pouvez vous le mot clé distinct dans vos critères générateur de ce genre.
Et créer le champ constructeur de votre classe de modèle.
J'ai eu une réponse pour Hibernate Query Language à utiliser domaines Distincts.
Vous pouvez utiliser *SELECT DISTINCT(TO_CITY) à PARTIR de FLIGHT_ROUTE*.
Si vous utilisez SQL requête, il retourne la Chaîne de la Liste. Vous ne pouvez pas utiliser la valeur de retour par Classe d'Entité.
Donc la Réponse pour résoudre ce type de Problème est l'utilisation HQL avec SQL.
De SQL l'instruction de la requête qu'il a obtenu DISTINCTES ROUTE_ID et entrée sous forme de Liste.
Et DANS le filtre de requête distinctes TO_CITY à partir DE (Liste).
Type de retour est une Entité du type de grain.
Si vous le pouvez, il en AJAX comme AutoComplement.
Peuvent tous être OK