À l'aide de sql noms de colonne dans hibernate createSQlquery résultat
J'ai un couple de vues sql avec les clés primaires composées que je veux requête, et depuis Hibernate en fait une douleur à travailler avec composite keyes, je suis en utilisant createSQLQuery
. Le problème est que cette méthode ne peut retourner une Liste, et j'ai besoin de faire référence aux colonnes par leur index.
Toute chance je pourrais faire quelque chose comme jdbc et reportez-vous aux colonnes par leurs sql nom à la place de leur indice?
Vous devez vous connecter pour publier un commentaire.
Comme vous pouvez le comprendre à partir du code, la liste contient les objets de la Carte représentant de chaque ligne. Chaque Carte objet nom de la colonne comme clé et la valeur de la valeur.
Remarque: Ce travail pour SQLQuery, si votre utilisation de AliasToEntityMapResultTransformer sur requête hql sans spécifier des alias, vous obtiendrez de l'indice de valeur en tant que clé.
Si vous êtes nouveau à la transformation de aliasToValueMapList à votre POJO liste, je vous conseille de créer votre propre
ResultTransformer et de retour de votre objet personnalisé à partir de 'transformTuple" la méthode.
addScalar
déclarations (par exemplequery.addScalar("myAlias", IntegerType.INSTANCE)
). Sinon vous risquez d'obtenir incorrect alias (par exemple, convertis en majuscules) ou un type de données incorrect.Méthode indiquée dans le commentaire ci-dessus:
ne fonctionne pas pour moi en fait:
Votre question est ambiguë - dans le premier paragraphe que vous souhaitez faire référence aux colonnes par index et dans le second, en sql nom. Puisque par l'index est facile, je vais assumer par son nom.
Tout d'abord, vous pouvez utiliser le
doWork
méthode pour accéder au sous-jacente de la connexion JDBC et de les traiter comme vous le feriez avec de la pure JDBC:Ou, vous pouvez utiliser
query.getReturnAliases
qui renvoie uneString[]
des noms de colonne. Pour l'efficacité, je serais probablement construire uneMap
d'alias à l'index, puis vous pouvez faire quelque chose commeresult[map.get("column name")]
.Mais vraiment, Hibernate poignées clés composites assez facilement lors de l'utilisation de xml mappages n'ai pas essayé avec des annotations). C'est un peu plus de travail à l'avant et il y a un peu de problèmes avec les relations complexes (surtout quand les noms des clés étrangères/enjambe ne correspondent pas), mais une fois que vous créez l'id de la classe et de la carte, vous pouvez coller avec HQL/Critères et obtenir tous les avantages de chargement paresseux, simple joint, sale de contrôle, etc ...
J'ai eu le même problème mais il a résolu lorsque j'ai utilisé ce
Je obtenir le résultat avec l'en-tête de nom mais j'ai un nouveau problème, lorsque je créer une nouvelle colonne dans la requête sql Select 'DCA5E3" comme Shipmentcolor de Employee.class
Mais dans ce cas je suis SHIPMENTCOLOR: "D".
Comment obtenir toute la valeur de la SHIPMENTCOLOR.