Red*_*ddy 37 java orm hibernate resulttransformer native-sql
我有一个如下查询
select f.id, s.name, ss.name
from first f
left join second s on f.id = s.id
left join second ss on f.sId = ss.id
Run Code Online (Sandbox Code Playgroud)
如果我可以使用HQL,我会使用HQL构造函数语法直接用结果集填充DTO.但是,由于hibernate不允许左连接而没有关联,我必须使用Native SQL Query.
目前,我循环遍历JDBC样式的结果集并填充DTO对象.有没有更简单的方法来实现它?
Pas*_*ent 61
你可以使用结果转换器.引用Hibernate 3.2:HQL和SQL的变换器:
SQL变形金刚
使用本机sql返回非实体bean或Map通常更有用而不是基本
Object[].现在可以使用结果变换器.Run Code Online (Sandbox Code Playgroud)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()方法)
| 归档时间: |
|
| 查看次数: |
57775 次 |
| 最近记录: |