Consider using Querydsl : http://www.querydsl.com
It supports JPA/Hibernate, JDO, SQL and Collections.
Querydsl is fully type-safe, supports autocomplete in IDEs and provides a common querying syntax on top multiple backends.
I am the maintainer of Querydsl, and I wrote a comparison to other frameworks some time ago.
It is slightly biased, but shows the different emphasis
- statically typed or not
- which backends are supported
- is the interface for query construction cascading or not
Newer frameworks experiment also with closure syntax.