Hibernate 离线查询问题

我在使用hibernate 进行分页查询时出现了这样的问题.

使用同一个条件对象DetachedCriteria ,


首先查询总记录行数

public Integer getResultRowsCount(DetachedCriteria deta) {
        Criteria criteria = deta.getExecutableCriteria(getSession());
        criteria.setProjection(Projections.rowCount());
        Long rowCount = 0l;
        rowCount = (Long) criteria.uniqueResult();
        return rowCount.intValue();
   }


然后查询当前页面记录

public List<T> findListByPaging(DetachedCriteria deta, int firstResult,
            int pageSize) {
        Criteria criteria = deta.getExecutableCriteria(getSession())
                .setFirstResult(firstResult).setMaxResults(pageSize);
        criteria.setProjection(null);// 去除统计行数条件
        List<T> entities = null;
        entities = criteria.list();
        return entities;
    }


使用中一直没有问题.直到有一次.使用了关联对象的属性作为查询条件

deta.createAlias("insProject", "project");

deta.add(Restrictions.eq("project.production.prodCode", prodCode);   

查询结果发现这样一个问题.

返回结果的集合中,每一个子项都包含了两个对象.一个是要求的查询结果,另外一个则是关联对象

页面使用中都无法判断到底使用那一个.


后来发现需要在在查询记录的方法中添加设置

criteria.setResultTransformer(Criteria.ROOT_ENTITY);  //将结果皆设置成原始数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值