请问我用hibernate的SQLQuery查询数据库里的一个字段onlineDuration在某个时间段的总数
然后用query.setResultTransformer(CriteriaSpecification.ALIAS_TO_ENTITY_MAP);Mapmap=(Map)...
然后用query.setResultTransformer(CriteriaSpecification.ALIAS_TO_ENTITY_MAP);Map map = (Map)query.uniqueResult();把结果转换成map结合,通过num键拿值 为什么在 map.get("num").toString()的时候总是报空指针呢,下面是完整的sql语句: String sql = "select sum(onlineDuration) as num,date_format(onlineTime,'%Y-%m') as yearMonth from t_online_user_duration_tbl where userId="+userId+" "+" and date_format(onlineTime,'%Y-%m') = '" + yearMonth + "'";
展开
1个回答
2015-02-13
展开全部
在某些场合下,我们可能想使用HIBERNATE的框架提供的SQL查询接口,但是,由于实体没有做映射,HIBERNATE不能把结果集转换成你想要的List<POJO>,本文讨论如何在这种情况下让HIBERNATE直接返回你想的结果。下面是简单的查询封装方法
Java代码
public List<?> findObjectBySql(String queryString,Class<?> pojoClass){
//使用SQL构造查询对象,此SQL是可以被JDBC接受的SQL,如SELECT * FROM XXX_TABLE
Query query = this.getSession().createSQLQuery(queryString);
//设置结果集转换器,这是本文重点所在
query.setResultTransformer(new EscColumnToBean(pojoClass));
//返回查询结果
return query.list();
Java代码
public List<?> findObjectBySql(String queryString,Class<?> pojoClass){
//使用SQL构造查询对象,此SQL是可以被JDBC接受的SQL,如SELECT * FROM XXX_TABLE
Query query = this.getSession().createSQLQuery(queryString);
//设置结果集转换器,这是本文重点所在
query.setResultTransformer(new EscColumnToBean(pojoClass));
//返回查询结果
return query.list();
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询