스택 오버플로 주위를 파킹 한 후 문제점을 계산할 때 다음과 같은 솔루션을 발견했습니다. 내 요구 사항은 일치하는 행의 총 수를 얻고 페이지 매김 목적으로 처음 10 개를 반환하는 것입니다. org.hibernate.hql.ast.QuerySyntaxException :JPA 및 잘못된 경로 계산
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<T> cq = cb.createQuery(clazz);
CriteriaQuery<Long> counterCq = cb.createQuery(Long.class);
counterCq.select(cb.count(counterCq.from(clazz)));
Predicate predicate= null;
Predicate predicate1 = null;
Root<T> root = cq.from(clazz);
for (Map.Entry<String, String> e : filters.entrySet()){
predicate = cb.and(cb.like(root.<String>get(e.getKey()), e.getValue()+ "%"));
}
if(predicate != null){
cq.where(predicate);
counterCq.where(predicate);
}
int pn = (em.createQuery(counterCq).getSingleResult()).intValue();
logger.debug("number of pages is {}", pn);
setRowCount(pn);
if(sortField !=null && !sortField.trim().equals("")){
if(sortOrder == SortOrder.DESCENDING){
cq.orderBy(cb.desc(root.get(sortField)));
} else{
cq.orderBy(cb.asc(root.get(sortField)));
}
}
Query q = em.createQuery(cq);
q.setFirstResult(first);
q.setMaxResults(first+ps);
List<T> cats= (List<T>)q.getResultList();
이 조각은
java.lang.IllegalArgumentException가를 통해 할 최대 절전 모드로 만드는 잘못된 경로를 'generatedAlias1.title'[SELECT COUNT (generatedAlias0)에서 미디어 generatedAlias0 generatedAlias1.title like : param0]
다른 검색어로는 cq.from(clazz)
을 사용할 수 없습니다. 내 질문 : 두 쿼리에서 동일한 조건자를 사용하는 방법이 있습니까?