From 7af45fb1bea0aa51f8baf3b8f1dbc0f45f1eff59 Mon Sep 17 00:00:00 2001 From: Vanderson Silva Date: Fri, 6 Jul 2012 17:37:02 -0300 Subject: [PATCH] inclusao dos metodos findJPQL e findCriteria genérico integrado ao mecanismo de paginação do Demoiselle 2 --- impl/extension/jpa/src/main/java/br/gov/frameworkdemoiselle/template/JPACrud.java | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+), 0 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 50536b1..b8e85fc 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 @@ -48,6 +48,7 @@ import javax.persistence.EntityManager; import javax.persistence.Enumerated; import javax.persistence.Query; import javax.persistence.TransactionRequiredException; +import javax.persistence.TypedQuery; import javax.persistence.criteria.CriteriaBuilder; import javax.persistence.criteria.CriteriaQuery; import javax.persistence.criteria.Predicate; @@ -174,6 +175,49 @@ public class JPACrud implements Crud { List lista = query.getResultList(); return lista; } + + /** + * Perform a paged query by JPQL + * @param jpql + * @return + */ + public List findJPQL(String jpql) { + 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)); + listQuery.setFirstResult(pagination.getFirstResult()); + listQuery.setMaxResults(pagination.getPageSize()); + } + return listQuery.getResultList(); + } + + /** + * Perform a paged query by CriteriaQuery + * @param jpql + * @return + */ + 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()); + + return listQuery.getResultList(); + } + /** * Retrieves the number of persisted objects for the current class type. -- libgit2 0.21.2