Hibernate: Cartographie personnalisée noms de colonne de la procédure stockée nommée requête
J'ai actuellement la suite de la requête nommée qui s'enroule autour d'une procédure stockée:-
<hibernate-mapping>
<sql-query name="mySp">
<return-scalar column="name_first" type="string" />
<return-scalar column="name_last" type="string" />
{ call some_sp :param }
</sql-query>
</hibernate-mapping>
Les colonnes name_first
et name_last
sont exactement les mêmes que les noms de colonnes retournées par la procédure stockée. J'ai créé un haricot qui contient les mêmes noms de colonnes afin que je puisse la carte la requête de suite dans ce bean.
public class MyBean {
private String name_first;
private String name_last;
...
}
Hibernate code qui appelle le nom de la requête et de la carte le résultat dans le haricot:-
MyBean myBean = (MyBean) sessionFactory.getCurrentSession()
.getNamedQuery("mySp")
.setParameter("param", param)
.setResultTransformer(Transformers.aliasToBean(MyBean.class))
.uniqueResult();
Tous ces beaux travaux, mais au lieu de compter sur les noms de colonne de la procédure stockée, je veux utiliser mes propres noms de colonne dans MyBean
, par exemple:-
public class MyBean {
private String firstName; //instead of name_first
private String lastName; //instead of name_last
...
}
Comment puis-je carte mon les noms de colonnes à l'encontre de la procédure stockée colonnes dans ma requête nommée ci-dessus?
Grâce.
Mise à JOUR - j'ai ajouté ma solution finale ci-dessous.
OriginalL'auteur limc | 2011-02-01
Vous devez vous connecter pour publier un commentaire.
Vous aurez besoin de mettre en place votre propre ResultTransformer. C'est très simple, et vous pouvez regarder le source du trio implémentations pour l'inspiration.
http://docs.jboss.org/hibernate/core/3.6/javadocs/org/hibernate/transform/ResultTransformer.html
https://github.com/hibernate/hibernate-core/tree/master/hibernate-core/src/main/java/org/hibernate/transform
Answers
section.OriginalL'auteur jpkrohling
@Partenon sa réponse sur l'aide personnalisée
ResultTransformer
, voici la solution finale:-OriginalL'auteur limc
Tout simplement construire votre bean manuellement :
Cela a un autre avantage : il vous permet de vous faire MyBean immuable.
OriginalL'auteur JB Nizet
Vous pouvez utiliser la solution décrite dans ce post de blog.
Il fonctionne très bien et peut être réutilisé bien.
OriginalL'auteur Luciano Fiandesio