日期:2014-05-20  浏览次数:20735 次

HQL 如何消除重复项
Java code

public pageBean seachProductByBrank(int pageSize, int currentLPage,
            String product_Brank, String product_itemName) {
        final String hql = "from " + OgrilProducts.class.getName()
                + " where product_Brank='" + product_Brank
                + "' and product_itemName='" + product_itemName
                + "' order by product_registerDate desc";
        int allRow = this.getAllRowCount(hql);// 总记录数
        int totalPage = pageBean.countTotalpage(pageSize, allRow);// 总页数
        final int offset = pageBean.countOffset(pageSize, currentLPage);// 当前页开始记录
        final int length = pageSize;
        final int currentPage = pageBean.countCurrentPage(currentLPage);
        List list = this.queryForPage(hql, offset, length);// 记录
        // 把分页信息保存到Bean中
        pageBean pagebean = new pageBean();
        pagebean.setPageSize(pageSize);
        pagebean.setCurrentPage(currentPage);
        pagebean.setAllRow(allRow);
        pagebean.setTotalPage(totalPage);
        pagebean.setList(list);
        return pagebean;
    }



以上是查询分页的具体代码。 HQL 如何消除重复项?

------解决方案--------------------
重写equals?
------解决方案--------------------
group by
------解决方案--------------------
重写equals和hashCode
------解决方案--------------------
探讨

因为查询出来的数据有好多都是重复的。 因为同一个货号可能有两到三个商品。怎么样可以让它查询的时候就把相同货号的只让他显示一条。?

------解决方案--------------------
Java code
 List list = this.queryForPage(hql, offset, length);// 记录

------解决方案--------------------
用DISTINCT可以解決大部份問題
Java code

String hql = "select distinct(obj.number),obj.a,obj.b from Object obj where ...";