Pessoal, boa tarde.
Venho falar de uma nova ferramenta open source para facilitar o uso de Criteria, se chama EasyCriteria.
Veja só como essa ferramenta facilita. Abaixo como um select ALL utilizando criteria nativo do JPA seria:CriteriaQuery<Person> criteriaQuery = criteriaBuilder.createQuery(Person.class);
Root<Person> root = criteriaQuery.from(Person.class);
criteriaQuery.select(root);
TypedQuery<Person> query = entityManager.createQuery(criteriaQuery);
query.getResultList();Agora, veja como ficaria uma Criteria utilizando o EasyCriteria:EasyCriteria<Person> easyCriteria = EasyCriteriaFactory.createQuery(entityManager, Person.class);
easyCriteria.getResultList();Essa solução é para ajudar quem trabalha com EntityManager nativo e não deseja deixar o código acoplado ao hibernate que tem uma ótima critéria. Com isso seu código ficará desacoplado do Hibernate e ainda assim você poderá ter um fácil acesso ao Criteria. [=
Atualmente se encontra na versão beta, temos 100% de cobertura no código que é testado com Hibernate, EclipseLink e OpenJPA.
É possível também fazer um link dos comandos conforme abaixo:easyCriteria.whereEquals("houseNumber", 150L).orderByAsc("age");
easyCriteria.whereIsNull("birthDay").leftJoinFetch("dogs");Lógico que já existe diversas coisas que podem e serão melhoradas. A primeira versão está sendo lançada para já se ter um idéia de como será a aceitação pelos usuários, possíveis bugs e melhorias.
Na versão 1.0 já é possível realizar o Join com parâmetros na Criteria:easyCriteria.innerJoin("dogs", Dog.class);
easyCriteria.whereJoinEquals("dogs", "name", "Dark");
easyCriteria.whereJoinStringNotIn("dogs", "name", names); // names is a List<String>
easyCriteria.whereJoinStringLike("dogs", "name", "M%");
easyCriteria.whereJoinListIsEmpty("dogs", "cars");
easyCriteria.whereJoinAttributeIsNull("dogs", "nickName");
easyCriteria.whereJoinStringBetween("dogs", "name", "A", "L");O jar dessa biblioteca é enorme, 10kb. O.o Sim, a biblioteca não precisa de levar nenhuma dependência uma vez que para ser utilizada o desenvolvedor já deve ter o JPA “up and running”.
O site oficial é http://easycriteria.uaihebert.com
Lá tem um guide com todos os métodos, o jar para download e mais. [=
Espero que vocês gostem e possam compartilhar! =D


