Конвертер JPQL в SQL

Можно ли получить доступ к SQL, который генерируется JPQL?

Я хотел бы использовать SQL, чтобы позже создать представление для моих целей.

Я использую Hibernate, если это имеет значение.

3 ответа

Решение

Поэтому вам нужно написать свою собственную реализацию JPQL:-) В конце концов, преобразование JPQL в SQL для хранилища данных RDBMS - это реализация JPQL. Удачи!

Конечно, вы можете использовать существующую реализацию JPQL, будь то Hibernate, или EclipseLink, или DataNucleus ... и, поскольку они все с открытым исходным кодом, вы должны пойти и покопаться в их кодовой базе.

Можно ли получить доступ к SQL, который генерируется JPQL?

Вы можете получить доступ к SQL String из спящего Interceptor точнее из метода Interceptor.html#onPrepareStatement(java.lang.String)

onPrepareStatement

String onPrepareStatement (String sql) Вызывается, когда готовится строка sql. Параметры: sql - sql быть подготовленным Возвращает: оригинальный или модифицированный sql

Если вы решите пойти по этому пути, лучшим вариантом будет расширение EmptyInterceptor и переопределить только те методы, которые вы хотите.

Вы можете подключить ваш перехватчик, используя следующую декларацию в вашем persistence.xml:

<properties>
  <property name="hibernate.ejb.interceptor" value="com.acme.MyInterceptor"/>
</properties>

Вы можете установить hibernate.show_sql Если для свойства установлено значение true, то все SQL будут отображаться на консоли.

<property name="hibernate.show_sql">true</property>
Другие вопросы по тегам