zoukankan      html  css  js  c++  java
  • hibernate 使用sql 查询(setResultTransformer)

    使用方法举例如下:

     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;
    }  

    }

  • 相关阅读:
    获取SqlServer2005表结构
    SQL SERVER 2005连接其它数据库并导入数据表
    vs2008安装失败问题
    Elmah使用方法
    使用postman发送请求,body为空
    docker的简单使用
    mongodb5最新版本的安装和向外暴露端口
    初探gin框架
    img图片的src指定为网络中随便找的图片链接,但是控制台报错get请求403
    父元素为flex布局时,设置最后一个子元素靠右,其他靠左
  • 原文地址:https://www.cnblogs.com/henuyuxiang/p/4273090.html
Copyright © 2011-2022 走看看