Hibernate的QBC查询返回Object[]集合
2016-11-04 16:42
274 查看
背景说明
Lesson类和Course类。关系:多对一,多个Lesson对应一个Course。
/** 课程级别 */ @Entity @Table(name = "t_biz_courses") public class Course extends BaseObject { .... } /** 课程 */ @Entity @Table(name = "t_biz_lessons") public class Lesson extends BaseObject { ... @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "course") private Course course; ... }
在对Lesson进行单独查询时:
Criteria c = session.createCriteria(Lesson.class); c.addOrder(Order.asc("id")); c.list();//返回的结果是List<Lesson>
返回的Lesson集合符合要求。
出现问题
当Lesson关联course进行查询时:Criteria c = session.createCriteria(Lesson.class); c.createAlias("course", "cr"); if (StringUtils.isNotBlank(params.get("course"))) { c.add(Restrictions.eq("cr.id", Long.valueOf(params.get("course")))); } c.list();//返回的结果是List<Object[]>,Object[0]和Object[1]分别是course和lesson。
返回的List集合是Object[]集合,而不是Lesson集合。
解决方案
添加如下代码:Criteria c = session.createCriteria(Lesson.class); c.createAlias("course", "cr"); if (StringUtils.isNotBlank(params.get("course"))) { c.add(Restrictions.eq("cr.id", Long.valueOf(params.get("course")))); } c.setResultTransformer(Criteria.ROOT_ENTITY);//添加这一行 c.list();//返回的结果为List<Lesson>
这时返回的List集合是Lesson。
相关说明
/*** Each row of results is an instance of the root entity
*/
org.hibernate.criterion.CriteriaSpecification.ROOT_ENTITY
相关文章推荐
- SSH使用QBC查询时无法将查处的集合存入实体集合中,而是返回Object[]
- hibernate--原生SQL查询无法返回对象集合
- hibernate执行的SQL语句返回的list集合用Object[]接收遍历
- hibernate通过sql查询返回一个key value对应的map对象型集合
- hibernate通过query查询返回实体集合相关注意事项
- hibernate执行的SQL语句返回的list集合用Object[]接收遍历
- hibernate的3中查询举例——返回对象或转化对象、返回Object
- hibernate执行的SQL语句返回的list集合用Object[]接收遍历
- hibernate面对多表查询返回装载Object对象的list的处理办法 (补16年12月)
- Hibernate 高级查询技巧——集合过滤与子查询
- hibernate 无法返回 查询的数据
- Hibernate 高级查询技巧——集合过滤与子查询
- hibernate查询数据表char类型字段只返回一个字符
- 小谈Hibernate中的HQL与QBC查询
- Hibernate使用SQL,查询返回Bean或修改的使用
- Hibernate高级使用:查询返回自定义对象
- Hibernate QBC的查询方式的总结
- 概括Hibernate HQL和QBC查询
- hibernate之优化抓取(选择抓取策略之通过子查询预抓取集合)
- Hibernate使用SQL,查询返回Bean或修改的使用