JpaUtil.java 文件源码

java
阅读 25 收藏 0 点赞 0 评论 0

项目:linq 作者:
@SuppressWarnings("unchecked")
/**
 * 分页条件查询
 * @param cq 条件
 * @param pageable 分页信息
 * @param <T> 领域类(实体类)范型
 * @return 分页结果
 */
public static <T> Page<T> findAll(CriteriaQuery<T> cq, Pageable pageable) {
    Class<T> domainClass = cq.getResultType();
    Root<T> root;
    if (CollectionUtils.isEmpty(cq.getRoots())) {
        root = cq.from(domainClass);
    } else {
        root = (Root<T>) cq.getRoots().iterator().next();
    }
    EntityManager em = getEntityManager(domainClass);
    if (pageable == null) {
        List<T> list = findAll(cq);
        return new PageImpl<T>(list);
    } else {
        Sort sort = pageable.getSort();
        cq.orderBy(QueryUtils.toOrders(sort, root, em.getCriteriaBuilder()));
        TypedQuery<T> query = em.createQuery(cq);

        query.setFirstResult(pageable.getOffset());
        query.setMaxResults(pageable.getPageSize());

        Long total = count(cq);
        List<T> content = total > pageable.getOffset() ? query.getResultList() : Collections.<T> emptyList();

        return new PageImpl<T>(content, pageable, total);
    }
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号