From 2d7b9aad89368f09e2050a775ce7b0de7921f0d0 Mon Sep 17 00:00:00 2001 From: Vanderson Silva Date: Wed, 11 Jul 2012 19:48:38 -0300 Subject: [PATCH] Ajustes do PullRequest anterior: - Uso de metodos protecteds - Renomeação dos métodos para findByJPQL e findByCriteriaQuery - Ajustes no Javadoc Correção do método findByJPQL que não versão anterior não funcionava corretamente. --- impl/extension/jpa/src/main/java/br/gov/frameworkdemoiselle/template/JPACrud.java | 57 ++++++++++++++++++++++++++++----------------------------- 1 file changed, 28 insertions(+), 29 deletions(-) diff --git a/impl/extension/jpa/src/main/java/br/gov/frameworkdemoiselle/template/JPACrud.java b/impl/extension/jpa/src/main/java/br/gov/frameworkdemoiselle/template/JPACrud.java index b8e85fc..d17be4e 100644 --- a/impl/extension/jpa/src/main/java/br/gov/frameworkdemoiselle/template/JPACrud.java +++ b/impl/extension/jpa/src/main/java/br/gov/frameworkdemoiselle/template/JPACrud.java @@ -175,46 +175,45 @@ public class JPACrud implements Crud { List lista = query.getResultList(); return lista; } - + /** - * Perform a paged query by JPQL - * @param jpql - * @return + * Search JPQL integrated into the context of paging + * @param jpql - query in syntax JPQL + * @return a list of entities */ - public List findJPQL(String jpql) { + protected List findByJPQL(String jpql) { + pagination = getPagination(); TypedQuery listQuery = getEntityManager().createQuery(jpql, getBeanClass()); - Pagination pagination = getPagination(); if (pagination != null) { - CriteriaBuilder builder = getEntityManager().getCriteriaBuilder(); - CriteriaQuery countQuery = builder.createQuery(Long.class); - countQuery.select(builder.count(countQuery.from(getBeanClass()))); - getEntityManager().createQuery(jpql, getBeanClass()); - pagination.setTotalResults((int) (getEntityManager().createQuery(countQuery).getSingleResult() + 0)); + int indexFrom = jpql.toUpperCase().indexOf("FROM"); + String countJPQL = "SELECT count(*) " + jpql.substring(indexFrom); + Query query= getEntityManager().createQuery(countJPQL); + Number cResults=(Number) query.getSingleResult(); + pagination.setTotalResults(cResults.intValue()); listQuery.setFirstResult(pagination.getFirstResult()); listQuery.setMaxResults(pagination.getPageSize()); } return listQuery.getResultList(); } - + /** - * Perform a paged query by CriteriaQuery - * @param jpql - * @return + * Search CriteriaQuery integrated into the context of paging + * @param criteriaQuery - structure CriteriaQuery + * @return a list of entities */ - public List findCriteria(CriteriaQuery select) { - CriteriaBuilder builder = getEntityManager().getCriteriaBuilder(); - - CriteriaQuery countQuery = builder.createQuery(Long.class); - countQuery.select(builder.count(countQuery.from(getBeanClass()))); - getEntityManager().createQuery(countQuery); - - Pagination p = getPagination(); - p.setTotalResults((int) (getEntityManager().createQuery(countQuery).getSingleResult() + 0)); - - TypedQuery listQuery = getEntityManager().createQuery(select); - listQuery.setFirstResult(p.getFirstResult()); - listQuery.setMaxResults(p.getPageSize()); - + public List findByCriteriaQuery(CriteriaQuery criteriaQuery, List predicates) { + pagination = getPagination(); + TypedQuery listQuery = getEntityManager().createQuery(criteriaQuery); + if (pagination != null) { + CriteriaBuilder builder = getEntityManager().getCriteriaBuilder(); + CriteriaQuery countQuery = builder.createQuery(Long.class); + countQuery.select(builder.count(countQuery.from(getBeanClass()))); + countQuery.where(predicates.toArray(new Predicate[] {})); + getEntityManager().createQuery(countQuery); + pagination.setTotalResults((int) (getEntityManager().createQuery(countQuery).getSingleResult() + 0)); + listQuery.setFirstResult(pagination.getFirstResult()); + listQuery.setMaxResults(pagination.getPageSize()); + } return listQuery.getResultList(); } -- libgit2 0.21.2