Comment puis-je sélectionner la classe d'un objet dans HQL? Lorsque je fais ce qui suit: hibernate renvoie un entier (par exemple [12, "nom"]) au lieu d'un objet de classe. Comment puis-je retourner une classe Java, ou au moins le nom de la classe ou de l'entité? Ou, si cela n'est pas possible, comment puis-je convertir la classe 12 en java? P> Pour des raisons de performances, je ne peux pas interroger les objets complets, c'est-à-dire que je ne peux pas faire P> < Pré> XXX PRE> Cordialement,
Jochen P> p>
4 Réponses :
scalaire HQL qui spécifie explicitement que le nom de la colonne de la clause SELECT renvoie une liste de à Renvoie une liste d'objet, utilisez pour restreindre l'enregistrement Retourné par le HQL, appliquez quelques conditions dans la clause WHERE du HQL, par exemple: objet [] code> .Chage d'index dans la matrice renvoyée correspond à la colonne correspondante de la clause Select.
Sélectionnez E dans l'entité E code> ou simplement
de l'entité code>. p>
de l'entité E Où e.name = xxxxx code> p> p> p> P>
Battez-moi-moi :) Lorsque vous avez sélectionné les entités, vous pouvez utiliser les appels Java GetClass réguliers pour connaître la classe renvoyée.
Bonjour, je ne peux pas faire cela, puisque j'obmoignons deux dossiers de Gazillion avec centaines de classes différentes. La requête résultante serait trop lente.
Pouvez-vous appliquer un peu où la clause du HQL?
Si vous souhaitez limiter le nombre C'est-à-dire p> également, ajoutez un constructeur correspondant dans l'entité code> code> de la classe que cette requête peut utiliser. P> Ceci Vous donnera la liste Ceci est utile lorsque vous avez besoin d'un instantané d'un objet important de manière performante. Lire ici pour l'API docs ou ici pour un exemple. p> p> neuf code> à l'intérieur du
HQL code>.
J'ai essayé cela, mais cela n'a pas fonctionné avec des paramètres de classe. Laissant dehors les travaux E.Class.
Quelle est la valeur correspondante de classe b> dans dB? J'espère que c'est une chaîne, alors vous devez définir la chaîne et essayer d'obtenir la catégorie b> de celle-ci.
C'est une propriété intégrée d'hibernate. Par exemple. Dans les requêtes, vous pouvez faire Sélectionnez E. Nom de l'entité E Où E.Class = personne code>. Toutefois,
Sélectionnez E.Class Code> retournera un int, que j'ai besoin de mapper dans une classe.
Si vous êtes hibernate4, vous pouvez utiliser la fonction HQL 'Type ()' pour obtenir l'entité type si vous êtes hibernate3, la session.iterate () est une entité de retour comme hibernateproxy avec ID Seulement, et vous pouvez obtenir un nom d'entité et une pièce d'identité sans initialiser. p>
Vous pouvez simplement utiliser la méthode Addentity () pour indiquer à Hibernate d'utiliser votre classe pour mapper la réponse
Query query = session.createSQLQuery( "select e.class,e.name from Entity e where <your conditions>") .addEntity(Entity.class) List<Entity> result = query.list();