Получить нативную строку SQL из JPAQuery - PullRequest
0 голосов
/ 10 декабря 2018

Я использую 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: я проверял до и после получения запроса.

1 Ответ

0 голосов
/ 11 декабря 2018

Если вам нужен собственный SQL-запрос, сгенерированный Querydsl, вам нужно использовать SQLQueryFactory вместо JPAQueryFactory.Ваш JPQL-запрос, возвращенный JPAQueryFactory, преобразуется в SQL JPA, а не Querydsl.

...