JPA+Hibernate: Changement de createNativeQuery() + getResultList() comportement?

Ce que je vais décrire est un peu de code legacy. Il y a donc beaucoup de choses que je ne peut pas toucher/modifier.

Ce pseudo-code s'exécute bien la dans Jboss 4.0.3,

big_messy_sql = "select t1.f1 as somealias, t2.f2 as somehthingelse  from obj1 t1, obj2 t2 where crazy_conditions....";

Query query = entityManager.createNativeQuery(big_messy_sql);


List<Object> results = query.getResultList();

for (Object oRow : results) {
    Object[] r = (Object[]) oRow;
    //Do more crazy stuff

}

Donc , il fonctionne.

Maintenant, je suis en train de mettre à niveau le serveur Jboss pour 5.1.0 GA, qui utiliseront le plus up-to-date de la version d'hibernate

15:39:02,089 INFO  [Version] Hibernate Annotations 3.4.0.GA
15:39:02,167 INFO  [Environment] Hibernate 3.3.2.GA
15:39:02,183 INFO  [Environment] hibernate.properties not found
15:39:02,198 INFO  [Environment] Bytecode provider name : javassist
15:39:02,198 INFO  [Environment] using JDK 1.4 java.sql.Timestamp handling
15:39:02,495 INFO  [Version] Hibernate Commons Annotations 3.1.0.GA
15:39:02,511 INFO  [Version] Hibernate EntityManager 3.4.0.GA

Puis j'ai eu cette exception:

12:06:09,031 INFO  [BigDecimalType] could not read column value from result set: id; S0022: Invalid column name 'id'.

Je crois que c'est parce que cette version d'hibernate essayé de cartographier l'ensemble de résultats en classe obj1 et obj2 respectivement. Ces classes java sont extraites de la base de données via JPA ailleurs dans la présente demande (ie. nous avons tous le @Entity, @Table et Colonne @etc appliqué à la classe obj1 et obj2.) Depuis la colonne d'id est un alias de quelque chose d'autre dans ce désordre de la requête, l'ORM a échoué.

Voici ma question:

Il est partout je peux désactiver le mappage automatique de la Requête Native?

Je veux éviter d'aller tout le tralala de la définition d'un SQL à la cartographie pour ce désordre bête.

InformationsquelleAutor Anthony Kong | 2009-10-13