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

    }

  • 相关阅读:
    C++中的空类默认产生哪些类成员函数
    Berkeley Socket API – Creating a TCP/IP client in C
    覆盖父类以及using指令
    strcpy/memcpy/memmove的实现
    [C++对象模型][1]目录与参考
    用setsockopt()来控制recv()与send()的超时
    异常安全的赋值运算符重载函数
    伤不起的指针
    DP01背包
    证明一个数能被3整除,当且仅当它的各位数的和能被3整除
  • 原文地址:https://www.cnblogs.com/henuyuxiang/p/4273090.html
Copyright © 2011-2022 走看看