hibernate3.2里的Transformers
发表于:2010年06月24日  分类:技术  Comments Off  0 次浏览 

hibernate 里想将sql的结果转为对象,但是对象不想再.hb.xml里定义,可以考虑用 ResultTransformer

使用SQL Transformers

  1. List resultWithAliasedBean = s.createSQLQuery(
  2.   "SELECT st.name as studentName, co.description as courseDescription " +
  3.   "FROM Enrolment e " +
  4.   "INNER JOIN Student st on e.studentId=st.studentId " +
  5.   "INNER JOIN Course co on e.courseCode=co.courseCode")
  6.   .addScalar("studentName")
  7.   .addScalar("courseDescription")
  8.   .setResultTransformer( Transformers.aliasToBean(StudentDTO.class))
  9.   .list();
  10.  
  11. StudentDTO dto =(StudentDTO) resultWithAliasedBean.get(0);

注意,如果不加上addScalar()调用的话,可能有些属性不会被设置值,因为他们可能是用大写字母返回的。

用Map

指定Transformers.ALIAS_TO_MAP就可以了,如下所示,你不必为了在需要记忆字段对应的位置,因为他们是map

  1. List iter = s.createQuery(
  2.   "select e.student.name as studentName," +
  3.   "       e.course.description as courseDescription" +
  4.   "from   Enrolment as e")
  5.   .setResultTransformer( Transformers.ALIAS_TO_MAP )
  6.   .iterate();
  7.  
  8. String name = (Map)(iter.next()).get("studentName");

原文:http://swik.net/Hibernate/Hibernate+GroupBlog/Hibernate+3.2:+Transformers+for+HQL+and+SQL/cmxs

固定链接: http://liubin.nanshapo.com/2010/06/24/transformers-in-hibernate3-2/ | 其实我是一个程序员

报歉!评论已关闭.