J'ai cette table: Je veux interroger cette table avec mécanisme hibernate (pour utiliser le deuxième niveau de cache). Le résultat de la requête Hibernate doit être une carte de hachage où la clé est l'ID de champ et où la valeur est le nom du champ. P> Comment puis-je l'écrire avec HQL? P> Si J'utilise la carte, je ne peux utiliser que des alias et si j'utilise un constructeur avec un objet, je dois transformer en résultat en hayphmap qui prend du temps. P> le résultat de la requête doit être un hashmap: p> merci p> p> p>
6 Réponses :
Je pense que le plus proche que vous puissiez obtenir est d'utiliser cette requête: qui vous donnera un ensemble de résultats de deux tableaux de longueur. Vous devrez construire la carte manuellement, comme si: P> Notez que cela ignorera largement le cache de deuxième niveau et être traduit dans une requête SQL. P> p>
En supposant que ce compte ne présente aucune association non paresseuse qui serait chargée, ce qui suit est le meilleur que vous allez obtenir, performance-wise: Cela peut être "beaucoup de temps", mais ce n'est pas comme l'hibernate peut en quelque sorte éviter comme par magie l'étape consistant à mettre chaque ligne retournée dans une carte. P> Contrairement à l'autre réponse, cela devrait bénéficier du cache de second niveau. p> p>
Entité d'entité par défaut d'hibernate est entitymode.pojo. P>
Vous pouvez utiliser EntityMode.map entité en mode pour récupérer la sortie de requête dans le format de carte. P>
hiii ...
ci-dessous le code pourrait vous aider. p> Pour afficher les résultats car les objets fonctionnent: P> int i;
int j;
Object object = null;
for (i = 0; i < results.size(); i++) {
System.out.println("-------");
Object[] obj = (Object[]) results.get(i);
for (j=0;j<obj.length;j++)
{
System.out.println(obj[j]);
}
System.out.println("-------");
}
Obtenir d'utiliser le nom d'entité par défaut Vous pouvez appliquer le nom d'entité au fichier HBM.XML. P>
Par exemple p>
Utilisation de cela, Hibernate donne la paire de la clé / de la valeur qui signifie renvoyer la carte. P>
Cette question est ancienne mais cela pourrait toujours aider d'autres personnes.
Vous pouvez maintenant utiliser HQL pour retourner des cartes avec Hibernate.
Utilisez quelque chose comme ceci: de Hibernate Docs:
http://docs.jboss.org /hibernate/orm/3.3/reference/fr/HTML/QueryHQL.html#queryHQL-Sélectionnez P> p>
Environ 1 an 1/2, j'ai mis à jour ma réponse acceptée! C'était exactement ce que j'ai cherché. Ceci est un peu trop tard mais une information utile!
@Jeromecance et 7 ans plus tard, je me demande pourquoi c'est la réponse acceptée ... Comment mappez-vous l'ID au nom? Cela ne fait que mapper les alias des valeurs sélectionnées.