http://simasch.github.io/qlrm/
https://github.com/simasch/qlrm
Example:
Query q = em.createNativeQuery( "SELECT c.id, c.name, COUNT(o) as orderCount, AVG(o.price) AS avgOrder " + "FROM Customer c " + "JOIN Orders o ON o.cid = c.id " + "GROUP BY c.id, c.name"); List<CustomerDetailsResult> list = jpaResultMapper.list(q, CustomerDetails.class);