Chez un client, je découvre dans un bean des getters / setters en doublon : getMaVariable() et getMAVARIABLE(). Quelle horreur!

Le client m'explique que l'équipe de développement a eu des problèmes avec les noms de colonne Oracle lors de la transformation vers un Bean avec la méthode aliasToBean d'Hibernate, car Oracle renvoit systématiquemen des noms de colonne en majuscule... Les getters / setters ne sont alors pas trouvés.
J'ai finalement trouvé comment remédier au problème et je vous fais profiter de la solution.

String q = "SELECT axe, num_route AS numRoute, pr AS prStart, prfin AS prEnd FROM GRAPHE_AXE WHERE id_ech = :idEch";
SQLQuery hq = session.createSQLQuery(q).addScalar("axe").addScalar("numRoute").addScalar("prStart",Hibernate.DOUBLE).addScalar("prEnd",Hibernate.DOUBLE);
List<AxeRange> axeRanges = (List<AxeRange>) hq.setLong("idEch", idEch).setResultTransformer(Transformers.aliasToBean(AxeRange.class)).list();


La réponse est dans ce post : http://www.mail-archive.com/hibernate-dev@lists.jboss.org/msg01043.html
C'est plus un pb lié à la base de données qu'Hibernate

a) mettre les alias portant le même nom que les membres du bean dans la requête SQL
b) utiliser addScalar sur la SQLQuery initiale avec le même nom d'alias mais en case sensitive (correspondant aux membres du bean résultat): de cette façon un mapping sera fait entre le nom donné dans addScalar et l'alias majuscule renvoyé par Oracle
c) éventuellement forcer aussi les types dans addScalar (pour éviter de récupérer des BigDecimal sur des valeurs entières!)
d) utiliser aliasBean comme d'habitude

Sources : pour l'utilisation des query natives dans Hibernate cf. http://docs.jboss.org/hibernate/stable/core/reference/fr/html/querysql.html