关于Hibernate的createSQLQuery问题

来源:互联网 发布:淘宝开通淘金币抵扣 编辑:程序博客网 时间:2024/05/16 05:59

Hibernate中createQuery与createSQLQuery的

   createQuery是主要执行HQL语句的,createSQLQuery是执行SQL语句的。

   createQuery查询出的数据是以生成的bean对象返回LIst;而createSQLQuery返回的是数组,

   所以要想把查询的数据转换为bean对象装入LIst返回就得手动转换:

    ①:如果要转换成的bean对象是一个实体类的话,可以用:

            Query query = session.createSQLQuery(sql).addEntity(实体类名.class);

    ②:如果要转换的bean对象是一个VO或者是POLO对象的话,得用:

            .setResultTransformer(Transformers.aliasToBean(VO对象名.class));

 

关于Hibernate.String 提示过期:

    HIbernate.String如果用在Hibernate4.0以上版本时会报错,因为在4.0以后不在使用了;

   HIbernate.String应用在3.6.5版本及以下。用HIbernate.String如果报错或者提示过期的话可以用

     StandardBasicTypes.STRING代替。

 

 

下面是刚才用到的一段代码:

addScalar是把SQL语句里起的别名跟VO对象里的字段对应,StandardBasicTypes.STRING是转换成跟VO对象里对应的字段类型一致。

StringBuffer sb = new StringBuffer();sb.append(“ SQL语句 ”);Session session = this.getSession();Query query = session.createSQLQuery(sb.toString()).addScalar("username", StandardBasicTypes.STRING).addScalar("count", StandardBasicTypes.STRING)//将结果集映射为OrderCountHBXBySJVO对象   .setResultTransformer(Transformers.aliasToBean(OrderCountHBXBySJVO.class));List<OrderCountHBXBySJVO> lists = query.list();


addScalaraddScalaraddScalaraddScalaraddScalaraddScalar

 

0 0