hibernate (SQLQuery)query.setResultTransformer
2012-07-08 22:07
585 查看
转自:http://yyq2007aa.blog.163.com/blog/static/4418160920098293528586/
使用hibernate中sql查询:
在使用这个方法时总会报错:
String sql="select id, name, price from product"; //id的DB类型为bigint sqlserver 2000
Query query = session.createSQLQuery(sql);
List list = query.setResultTransformer(
Transformers.aliasToBean(ProductInfo.class)) //VO ProductInfo的id类型是Long
.setFirstResult(first).setMaxResults(size).list();
这样子使用会有问题,错误如下:
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
在指定返回的类型后这个错误就不存在了.
SQLQuery query = session.createSQLQuery(sql);
query.addScalar("id", Hibernate.LONG);
List list = query.setResultTransformer(
Transformers.aliasToBean(ProductInfo.class))
.setFirstResult(first).setMaxResults(size).list();
蓝色的部分是关键部分,在这样使用的时候最好是把所有返回的类型都指定了.
query.setResultTransformer(Transformers.aliasToBean(ProductInfo.class))
返回一个实体
query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP)返回一个Map:为DB中名称一致(大小写一致)遍历list时就可以对象
Map map = (Map)list.get[i];
map.get("id");map.get("name");来取值。按你的SQL语句select后的字段名来作为map的Key,但这个key必须与数据库中的字段名一模一样。
使用hibernate中sql查询:
在使用这个方法时总会报错:
String sql="select id, name, price from product"; //id的DB类型为bigint sqlserver 2000
Query query = session.createSQLQuery(sql);
List list = query.setResultTransformer(
Transformers.aliasToBean(ProductInfo.class)) //VO ProductInfo的id类型是Long
.setFirstResult(first).setMaxResults(size).list();
这样子使用会有问题,错误如下:
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
在指定返回的类型后这个错误就不存在了.
SQLQuery query = session.createSQLQuery(sql);
query.addScalar("id", Hibernate.LONG);
List list = query.setResultTransformer(
Transformers.aliasToBean(ProductInfo.class))
.setFirstResult(first).setMaxResults(size).list();
蓝色的部分是关键部分,在这样使用的时候最好是把所有返回的类型都指定了.
query.setResultTransformer(Transformers.aliasToBean(ProductInfo.class))
返回一个实体
query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP)返回一个Map:为DB中名称一致(大小写一致)遍历list时就可以对象
Map map = (Map)list.get[i];
map.get("id");map.get("name");来取值。按你的SQL语句select后的字段名来作为map的Key,但这个key必须与数据库中的字段名一模一样。
相关文章推荐
- hibernate里createSQLQuery的addEntity()和setResultTransformer()方法
- createSQLQuery的addEntity跟setResultTransformer方法
- hibernate 使用sql 查询(setResultTransformer)
- createSQLQuery的addEntity跟setResultTransformer方法
- hibernate 使用sql 查询利用setResultTransformer查询出封装好的VO对象
- 写在hibernate里面的sql setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
- hibernate,hql与sql的缓存使用 setResultTransformer的用法
- Hibernate中的query.setFirstResult(),query.setMaxResults(); .
- org.hibernate.Query 的setFirstResult(startRow) 和 setMaxResults(maxResult)
- Hibernate中的query.setFirstResult(),query.setMaxResults();
- Hibernate中的query.setFirstResult(),query.setMaxResults();
- Hibernate中的query.setFirstResult(),query.setMaxResults(); .
- Hibernate的query.setFirstResult(),query.setMaxResults()分页
- Hibernate中的query.setFirstResult(),query.setMaxResults();
- Hibernate 的原生sql查询转map setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP)
- Hibernate中的query.setFirstResult(),query.setMaxResults();
- 通过query解析hibernate中的resultTransformer
- Hibernate中的query.setFirstResult(),query.setMaxResults();
- Hibernate中的query.setFirstResult(),query.setMaxResults();
- Hibernate中的query.setFirstResult(),query.setMaxResults();