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