Я использую Spring Data JPA + QueryDSL.Я создаю свои динамические запросы следующим образом:
JPAQuery<Foo> query = jpaQueryFactory.select(...);
Я нашел эту старую статью, в которой показано, как программно получить нативную строку sql: https://antoniogoncalves.org/2012/05/24/how-to-get-the-jpqlsql-string-from-a-criteriaquery-in-jpa/, но она не работает для меня.
Я пробовал это:
String queryString1 = query.createQuery().unwrap(org.hibernate.query.Query.class).getQueryString();
String queryString2 = query.createQuery().unwrap(org.eclipse.persistence.jpa.JpaQuery.class).getDatabaseQuery().getSQLString();
Первый не возвращает мне собственный SQL, но строку JPQL, а второй не удается развернуть org.hibernate.query.internal.QueryImpl
до org.eclipse.persistence.jpa.JpaQuery
.
PS: я проверял до и после получения запроса.