If you want control over the used SQL and remain close to JDBC in general, you may be interested in MyBatis, which let's you write your own queries and provides a framework for "automatically" mapping ResultSets to POJOs based on XML- or annotation-based metadata.
A select would look like this in XML:
This would be mapped to a user like this:
With the properties being Bean properties in the POJO my.User