Nova versão disponibilizada!!
A idéia do projeto é simples, um objeto chamado Filter armazena as condições, restrições e ou parâmetros que deverão ser utilizados na montagem de uma query. O projeto converte os parâmetros armazenado no Filter e cria os objetos do JPA2 ou Hibernate de uma maneira simples e pratica.
Exemplo Hibernate
Filter filter = FactoryFilter.createFilter("phones.number", new Between<Long>(5683543L, 89548345L));
filter.add(new Order("phones.number",OrderMode.ASC));
filter.add(new Order("name",OrderMode.ASC));
Criteria criteria = new CriteriaSelectBuilder<Person>(session,Person.class).build(filter);
List<Person> person = criteria.list();
O codigo acima criara o hql:
Exemplo JPA2
Filter filter = FactoryFilter.createFilter();
filter.add("name", new Like("JOHN",LikeMode.START));
Query query = new QuerySelectBuilder<Person>(entityManager, Person.class).build(filter);
List<Person> people = query.getResultList();
O Filter também pode ser criado a partir de entidades preenchidas, similiar ao Example do hibernate.
O Filtro não suporta todas as funcionalidades disponibilizadas pelos frameworks ORM, porem as principais estão implementadas.
Na versão 2.0 os seguinte itens foram realizados:
-Integração com o JPA2
-Join recursivos e de segundo nivel
-Implementação de fetch type
-Novas condições e restrições disponibilizadas
-Reestruturação
-Testes de unidades
Mais informações: http://felipepriuli.wordpress.com/2012/09/18/jpriuli-filter-2-0/
Download: http://sourceforge.net/projects/priuli-filter/
Projeto de exemplos: http://sourceforge.net/projects/priuli-filter/files/v2.0/eclipse_example_project/