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

    }

  • 相关阅读:
    LOJ.114.K大异或和(线性基)
    BZOJ.2115.[WC2011]Xor(线性基)
    BZOJ.2460.[BeiJing2011]元素(线性基 贪心)
    Codeforces Round #494 (Div 3) (A~E)
    Codeforces Round #493 (Div 2) (A~E)
    BZOJ.3238.[AHOI2013]差异(后缀自动机 树形DP/后缀数组 单调栈)
    BZOJ.4180.字符串计数(后缀自动机 二分 矩阵快速幂/倍增Floyd)
    BZOJ.1396.识别子串(后缀自动机/后缀数组 线段树)
    BZOJ.3489.A simple rmq problem(主席树 Heap)
    BZOJ.4566.[HAOI2016]找相同字符(后缀自动机)
  • 原文地址:https://www.cnblogs.com/henuyuxiang/p/4273090.html
Copyright © 2011-2022 走看看