11
votes

Avec hibernate, comment puis-je interroger une table et retourner un hashmap avec une paire de paires de valeur de clé> Nom?

J'ai cette table: xxx

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.

Comment puis-je l'écrire avec HQL?

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. xxx

le résultat de la requête doit être un hashmap: xxx

merci


0 commentaires

6 Réponses :


5
votes

Je pense que le plus proche que vous puissiez obtenir est d'utiliser cette requête: xxx

qui vous donnera un ensemble de résultats de deux tableaux de longueur. Vous devrez construire la carte manuellement, comme si: xxx

Notez que cela ignorera largement le cache de deuxième niveau et être traduit dans une requête SQL.


0 commentaires

0
votes

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: xxx

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.

Contrairement à l'autre réponse, cela devrait bénéficier du cache de second niveau.


0 commentaires

3
votes

Entité d'entité par défaut d'hibernate est entitymode.pojo.

Vous pouvez utiliser EntityMode.map entité en mode pour récupérer la sortie de requête dans le format de carte.



0
votes

hiii ...

ci-dessous le code pourrait vous aider. p> xxx pré>

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("-------");

    }


0 commentaires

-1
votes

Obtenir d'utiliser le nom d'entité par défaut Vous pouvez appliquer le nom d'entité au fichier HBM.XML.

Par exemple

Utilisation de cela, Hibernate donne la paire de la clé / de la valeur qui signifie renvoyer la carte.


0 commentaires

14
votes

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: XXX

de Hibernate Docs: http://docs.jboss.org /hibernate/orm/3.3/reference/fr/HTML/QueryHQL.html#queryHQL-Sélectionnez


2 commentaires

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.