hibernate中 criteria.setProjection(Projections.rowCount()).uniqueResult()为null的Bug
2015-03-11 11:55
525 查看
在hibernate中,在查询总数时,会使用如下方法;
public Integer getCount(final DetachedCriteria detachedCriteria) {
return (Integer) getHibernateTemplate().execute(new HibernateCallback() {
@Override
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Criteria criteria = detachedCriteria.getExecutableCriteria(session);
int totalCount = (Integer) criteria.setProjection(
Projections.rowCount()).uniqueResult();
criteria.setProjection(null);
//
criteria.setResultTransformer(CriteriaSpecification.ROOT_ENTITY);
return totalCount;
}
}, true);
}
有时在int totalCount = (Integer) criteria.setProjection(
Projections.rowCount()).uniqueResult();这一句会报NullPointException。
原因是这句代码之前出现了criteria.addOrder(Order.desc("sc.createTime"));这样的排序语句。
把排序语句放到总数查询的后面即可。有时候你注释了缓存也仍然会影响的,需要把注释的语句也删掉。
public Integer getCount(final DetachedCriteria detachedCriteria) {
return (Integer) getHibernateTemplate().execute(new HibernateCallback() {
@Override
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
Criteria criteria = detachedCriteria.getExecutableCriteria(session);
int totalCount = (Integer) criteria.setProjection(
Projections.rowCount()).uniqueResult();
criteria.setProjection(null);
//
criteria.setResultTransformer(CriteriaSpecification.ROOT_ENTITY);
return totalCount;
}
}, true);
}
有时在int totalCount = (Integer) criteria.setProjection(
Projections.rowCount()).uniqueResult();这一句会报NullPointException。
原因是这句代码之前出现了criteria.addOrder(Order.desc("sc.createTime"));这样的排序语句。
把排序语句放到总数查询的后面即可。有时候你注释了缓存也仍然会影响的,需要把注释的语句也删掉。
相关文章推荐
- hibernate中 criteria.setProjection(Projections.rowCount()).uniqueResult()为null的Bug
- postgresql上Hibernate的DetachedCriteria同时添加addOrder和Projections.rowCount()运行出错。
- Hibernate的count(*)函数通过调用uniqueResult方法的返回值类型
- hibernate Criteria setProjection
- hibernate setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP)
- org.hibernate.Query 的setFirstResult(startRow) 和 setMaxResults(maxResult)
- 出现org.hibernate.NonUniqueResultException的原因即解决办法
- org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actua
- Hibernate之Query接口的uniqueResult()方法
- hibernate uniqueResult方法
- sql server 中 SET ROWCOUNT 的具体用法
- Connection cannot be null when 'hibernate.dialect' not set
- Hibernate之Query接口的uniqueResult()方法
- Hibernate 报错:Batch update returned unexpected row count from update [0]; actual row count
- 分页存储过程,综合了NOT_IN和SET ROWCOUNT
- INFO[org.hibernate.type.SerializableType] - could not read column value from result set: srulaaaId13_; could not deserialize
- hibernate 使用sql 查询(setResultTransformer)
- PDO rowCount 一直返回0 BUG
- org.hibernate.NonUniqueResultException: query did not return a unique result: 2
- Hibernate三种状态;query查询;ResultTransformer转换为pojo对象;可以将query语句写在xml中;Criteria查询;ProjectionList总和/f分组等函数