您也许可以使用结果转换器。引用Hibernate3.2:HQL和SQL的变压器:
SQL变形金刚
使用本机sql返回非实体bean或Map通常比basic更为有用
Object[]。使用结果转换器,现在成为可能。
> List resultWithAliasedBean = s.createSQLQuery(> "SELECt st.name as studentName, co.description as courseDescription "> +> "FROM Enrolment e " +> "INNER JOIN Student st on e.studentId=st.studentId " +> "INNER JOIN Course co on e.courseCode=co.courseCode")> .addScalar("studentName")> .addScalar("courseDescription")> .setResultTransformer( Transformers.aliasToBean(StudentDTO.class))> .list();> > StudentDTO dto =(StudentDTO) resultWithAliasedBean.get(0);提示:
addScalar()HSQLDB要求调用以使其与属性名称匹配,因为它以全大写形式返回列名称(例如“
STUDENTNAME”)。这也可以通过搜索属性名称而不是使用完全匹配的自定义转换器来解决-也许我们应该提供FuzzyAliasToBean()方法;)
参考文献
- hibernate参考指南
- 16.1.5。返回非托管实体
- hibernate的博客
- Hibernate 3.2:HQL和SQL的变形金刚



