获取EntityManager
@PersistenceContext
private EntityManager entityManager;
子查询
@Transactional
class Demo{
public void method(){
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<A> query = cb.createQuery(A.class);
Root<A> root = query.from(A.class);
Subquery<Long> subQuery = query.subquery(Long.class);
Root<TemplateDO> subRoot = subQuery.from(A.class);
subQuery.select(subRoot.get("id"))
.where(setPredicate(cb, subRoot, subQuery, request));
query.select(root).where(cb.in(root.get("id")).value(subQuery));
query.orderBy(cb.desc(root.get("createTime")))
.where(setPredicate(cb, root, query, request));
}
}
普通分页查询
class Demo{
public void method(){
query.orderBy(cb.desc(root.get("createTime")))
.where(setPredicate(cb, root, query, request));
TypedQuery<TemplateDO> typedQuery = entityManager.createQuery(query);
typedQuery.setFirstResult((request.getPageIndex() - 1) * request.getPageSize());
typedQuery.setMaxResults(request.getPageSize());
PageResult.page((int) totalCount
, request.getPageSize()
, request.getPageIndex()
, typedQuery.getResultStream()
.......
);
}
}