На чем лучше генерить SQL?
Для SQL считаю лучший клиент под Windows - это HeidiSQL www.heidisql.com
Это OpenSource проект, который постоянно развивается огромным сообществом, обновления выходят по 3-4 раза в месяц.
Если ты хочешь что-то типа такого:CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Book> q = cb.createQuery(Book.class);
Root<Book> b = q.from(Book.class);
q.select(b).orderBy(cb.desc(b.get("id")));
TypedQuery<Book> findAllBooks = em.createQuery(q);
Т.е. строить запросы программно, то гугли что-то типа "JPA динамические запросы". Как их правильно использовать, смотри тут.
А чтобы посмотреть, что же нагенерил тебе твой ORM-провайдер, то у Query есть метод unwrap, который вернёт тебе имплементацию JPA-провайдера (самый популярный - это hibernate). А далее, можно получить сгенерированный SQL. Подробнее тут (со слов "Getting the JPQL/SQL Strin....