http://www.jooq.org/

e.g.

SELECT AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME, COUNT(*)
�� �� FROM AUTHOR
�� �� JOIN BOOK ON AUTHOR.ID = BOOK.AUTHOR_ID
�� ��WHERE BOOK.LANGUAGE = 'DE'
�� �� ��AND BOOK.PUBLISHED > DATE '2008-01-01'
GROUP BY AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME
�� HAVING COUNT(*) > 5
ORDER BY AUTHOR.LAST_NAME ASC NULLS FIRST
�� ��LIMIT 2
�� OFFSET 1

gives (Java):

create.select(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME, count())
�� �� �� .from(AUTHOR)
�� �� �� .join(BOOK).on(AUTHOR.ID.equal(BOOK.AUTHOR_ID))
�� �� �� .where(BOOK.LANGUAGE.eq("DE"))
�� �� �� .and(BOOK.PUBLISHED.gt(date("2008-01-01")))
�� �� �� .groupBy(AUTHOR.FIRST_NAME, AUTHOR.LAST_NAME)
�� �� �� .having(count().gt(5))
�� �� �� .orderBy(AUTHOR.LAST_NAME.asc().nullsFirst())
�� �� �� .limit(2)
�� �� �� .offset(1)

I know that we have GLORP but this is not the same thing.

Phil