Конвертер JPQL в SQL - PullRequest
       25

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

5 голосов
/ 03 марта 2010

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

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

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

Ответы [ 3 ]

8 голосов
/ 11 сентября 2010

Можно ли получить доступ к SQL, сгенерированному JPQL?

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

<b><h2>onPrepareStatement</h2></b>
String <b>onPrepareStatement</b>(String sql)

    Called when sql string is being prepared.

    <b>Parameters:</b>
        sql - sql to be prepared 
    <b>Returns:</b>
        original or modified sql

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

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

<properties>
  <property name="hibernate.ejb.interceptor" value="com.acme.MyInterceptor"/>
</properties>
3 голосов
/ 03 марта 2010

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

<property name="hibernate.show_sql">true</property>
1 голос
/ 03 марта 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...