Чтобы получить SQL для конкретного запроса во время выполнения, вы можете использовать API DatabaseQuery.
Query query = em.createNamedQuery("findMe");
Session session = em.unwrap(JpaEntityManager.class).getActiveSession();
DatabaseQuery databaseQuery = ((EJBQueryImpl)query).getDatabaseQuery();
databaseQuery.prepareCall(session, new DatabaseRecord());
String sqlString = databaseQuery.getSQLString();
Этот SQL будет содержать? для параметров. Для перевода SQL с аргументами вам необходим DatabaseRecord со значениями параметров.
DatabaseRecord recordWithValues= new DatabaseRecord();
recordWithValues.add(new DatabaseField("param1"), "someValue");
String sqlStringWithArgs =
databaseQuery.getTranslatedSQLString(session, recordWithValues);
Источник: Как получить SQL для запроса