HQL: Comment sélectionner toutes les entités distinctes par colonne?
Une simple question:
Dans cet exemple, j'ai besoin de récupérer tous les objets, mais ces objets ont des msgFrom champs.
Lorsque j'utilise
List<Message> list = getHibernateTemplate().find("select distinct m.msgFrom from Message m WHERE msgTo = ? AND msgCheck = 0", dinc);
- Je obtenir de l'erreur suivante:
java.lang.ClassCastException: java.lang.Integer cannot be cast to com.example.model.Message
Je suppose que c'est parce que Hibernate récupère une seule colonne, mais j'ai besoin d'un objet, pas de colonne.
Comment puis-je faire cela?
Je crois que je peux juste faire défiler une virgule, c'est à dire
List<Message> list = getHibernateTemplate().find("select distinct m.msgFrom, m.To, m.datetime, .......... from Message m WHERE msgTo = ? AND msgCheck = 0", dinc);
Mais que faire si j'ai plus de 20 champs, ici? Est-il une solution simple?
Merci!
Vous devez vous connecter pour publier un commentaire.
Ci-dessous l'exemple de requête :
Alternativement, vous pouvez également utiliser des Critères de l'API.
Vous pouvez également utiliser des Critères et de la Projection de l'ensemble :
Espère que ça aidera quelqu'un.
Hibernate critères est assez facile de sélectionner des résultats.
Si vous souhaitez un seul résultat sera retourné dans les prévisions de résultats, vous pouvez utiliser:
Si vous voulez inclure l'ensemble de la classe de Message avec toutes ses propriétés, vous pouvez utiliser Hibernate résultat Transformateur,
Mais il les filtres sur la base de la racine de l'entité.
Ou
Que par votre question première solution donne des résultats corrects.
Essayer cela, il a travaillé pour moi:
J'ai eu une réponse pour Hibernate Query Language à utiliser domaines Distincts. Vous pouvez utiliser
SELECT DISTINCT(TO_CITY) FROM FLIGHT_ROUTE
. Si vous utilisez SQL de la 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 d'utiliser les requêtes HQL avec SQL.D'instruction de requête SQL, il a de
DISTINCT ROUTE_ID
et entrée sous forme de Liste. Et DANS le filtre de requête distinctesTO_CITY
deIN
(Liste).Type de retour est une Entité du type de grain. Si vous le pouvez, il en AJAX comme AutoComplement.
Peuvent tous être OK