使用方法举例如下:

public List findByOid(Object oid) {
  log.debug("finding all WatershedAnalyse instances");
  Session session=getSessionFactory().openSession();
  SQLQuery query=null;
  try {
   String queryString = "SELECT oid,bdatetime,basin_code,p,e FROM basin_in WHERE oid="+oid;
   query=session.createSQLQuery(queryString);
   query.addScalar("oid", Hibernate.INTEGER);
   query.addScalar("bdatetime", Hibernate.STRING);
   query.addScalar("basin_code", Hibernate.STRING);
   query.addScalar("p", Hibernate.DOUBLE);
   query.addScalar("e", Hibernate.DOUBLE);

query.setResultTransformer(Transformers.aliasToBean(BasinIn.class));  
   return query.list();
  } catch (RuntimeException re) {
   log.error("find all failed", re);
   throw re;
  }finally{
   session.close();
  }
 }

使用setResultTransformer  要使用query.addScalar("oid", Hibernate.INTEGER)指定
返回类型 否则会抛出以下异常。

Caused by: org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of com.serialssoloutions.database.entity.ProductInfo.id

Caused by: java.lang.IllegalArgumentException: argument type mismatch

BasinIn  bean如下

public class BasinIn  implements java.io.Serializable {
     private Integer oid;
     private String bdatetime;
     private String basin_code;
     private Double p;
     private Double e;
    public BasinIn() {
    }

public String getBasin_code() {
 return basin_code;
}

public void setBasin_code(String basin_code) {
 this.basin_code = basin_code;
}

public Integer getOid() {
 return oid;
}

public void setOid(Integer oid) {
 this.oid = oid;
}

public Double getP() {
 return p;
}

public void setP(Double p) {
 this.p = p;
}

public Double getE() {
 return e;
}

public void setE(Double e) {
 this.e = e;
}

public String getBdatetime() {
 return bdatetime;
}

public void setBdatetime(String bdatetime) {
 this.bdatetime = bdatetime;
}

}

hibernate 使用sql 查询(setResultTransformer)的更多相关文章

  1. Hibernate应用SQL查询返回实体类型

    Hibernate应用SQL查询返回实体类型 Hibernate使用SQL查询返回实体类型 以前,使用SQL查询,结果放在 RS 结果集中,还要去转换影射到Java类中.Hibernate中,可以自动 ...

  2. Hibernate通过SQL查询常量时只能返回第一个字符的解决方法

    在Hibernate中如果通过 [java] view plaincopy session.createSQLQuery("select '合计' as name from dual&quo ...

  3. 使用hibernate原生sql查询,结果集全为1的问题解决

    问题如下: String sqlTest ="select summary,summaryno from F_Summary"; List<Map<Object, Ob ...

  4. Hibernate纯sql查询VO对象封装

    hibernate 纯sql查询返回结果集(未关联映射)组装VO的问题//须保证别名字段与Vo字段一致 //引号中为vo对象属性需与sql查询返回字段一致.addScalar("chname ...

  5. Hibernate原生SQL查询多表关联,SQL语句要注意的问题

    Hibernate原生SQL查询多表关联,SQL语句要注意的问题 @for&ever 2009-9-4 系统环境: MySQL5.1 Hibernate3.3 有如下的假定: 实体类 Ques ...

  6. 使用HIBERNATE的SQL查询并将结果集自动转换成POJO

    在某些场合下,我们可能想使用HIBERNATE的框架提供的SQL查询接口,但是,由于实体没有做映射,HIBERNATE不能把结果集转换成你想要的List<POJO>,本文讨论如何在这种情况 ...

  7. Hibernate原生SQL查询

    最近在做一个较为复杂的查询,hibernate基本的查询不能满足,只好使用其提供的原生sql查询.参考网上的一些资料,做一些总结. 对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行 ...

  8. Hibernate之SQL查询

    Hibernate支持使用原生的SQL语句进行查询.使用原生的SQL的好处是:可以利用某些数据库的特性(不同的数据库SQL 语法会有所差异), 将原有的使用JDBC作为持久层技术的应用 ,迁移到使用H ...

  9. Hibernate:SQL查询 addScalar()或addEntity()

      Hibernate除了支持HQL查询外,还支持原生SQL查询. 对原生SQL查询执行的控制是通过SQLQuery接口进行的,通过执行Session.createSQLQuery()获取这个接口.该 ...

随机推荐

  1. 简单的setInterval应用

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  2. php 项目简单分类

    项目分为:客户需求和自行研发. 商城项目:------------------------商城分类:单商家:商家就是网站所有者.如京东.凡客.          多商家:如淘宝 网站所有者不是卖家.  ...

  3. Centos更换yum源,安装ssh server

    先连上网,然后更换yum源 1. 新建的用户没有sudo权限,所以首先切换到root用户su -输入密码 2. 备份之前的yum源mv /etc/yum.repos.d/CentOS-Base.rep ...

  4. IOS 播放视频 MPMoviePlayerController

    在unity游戏的开头播放视频 , 根据需求 , 最后决定用 MPMoviePlayerController 来实现播放, 实现如下: by Tin 需要在AppController.mm的 Open ...

  5. CATransform3D的使用以及各个参数的含义

    1. 缩放 CABasicAnimation *theAnimation=[CABasicAnimation animationWithKeyPath:@"transform"]; ...

  6. js实现td排序及分组分类

    如题 <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.o ...

  7. SQL的自增列重置的方法

    SQL的自增列挺好用,只是开发过程中一旦删除数据,标识列就不连续了 写起来 也很郁闷,所以查阅了一下标识列重置的方法 发现可以分为三种: --- 删除原表数据,并重置自增列 truncate tabl ...

  8. shell 入门教程

    打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好.     一  惯例,第一个shell #!/bin/bash echo "Hello ...

  9. java模式:深入单例模式

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://devbean.blog.51cto.com/448512/203501 在GoF ...

  10. 多线程junit单元测试

    junit中测试完成后会进行jvm退出,而不是线程退出,所以任一线程退出都会导致测试结束,junit想进行多线程测试需要进行另外包装,网上看到一个投机取巧的例子还不错,贴上我的测试代码(代码中我需要测 ...