2009-04-01 7 views
0

J'ai une classe VO qui a le getter et le setter d'une autre classe VO aussi. Par exemple:Spring Hibernate SQL Query

Class DocumentVO{ 
    PrintJobVO job; 
    PrintRunVO run; 
    String id; 
    getters and setters.. 
} 

Maintenant, j'ai besoin d'utiliser la requête SQL native en utilisant la mise en veille prolongée au printemps. Quand je veux mapper les identifiants, j'ai un problème. Ma requête est,

select {r.*},{d.*} 
from runs {r}, documents {d} 
where {r}.RUN_ID as {r.id} = d.RUN_ID as {d.run.id} 

Ici run est de type PrintRunVO qui a son identifiant et d'autres valeurs. Comment puis-je les mapper dans mon SQL? Je reçois une erreur comme invalid user.table.column, table.column, or column specification.

Quel est le moyen de surmonter cela?

Répondre

1

Utilisez le concept Result Transformer dans votre requête SQL simple.

String query = "myquery"; 
SQLQuery q = session.createSQLQuery(query); 
q.addScalar("param1", Hibernate.STRING); 
q.addScalar("param2", Hibernate.STRING); 
q.setResultTransformer(Transformers.aliasToBean(MyVO.class)); 
q.setParameter("queryParam1", "some value"); 
return q.list();