JPQL a SQL convertitore
Domanda
E 'possibile accedere al SQL che è generato da JPQL?
Vorrei utilizzare il codice SQL utilizzate poi per creare una vista per i miei scopi.
Sto usando Hibernate se è importante.
Soluzione
Quindi, è necessario scrivere una propria implementazione JPQL poi :-) Dopo tutto, la conversione JPQL in SQL per un archivio dati RDBMS è ciò che un'implementazione JPQL è. Buona fortuna!
Certo si potrebbe fare uso di un'implementazione JPQL esistente, però, se Hibernate, o EclipseLink, o DataNucleus ... e dal momento che sono tutti open source si dovrebbe andare a scavare nella loro base di codice.
Altri suggerimenti
E 'possibile accedere al SQL che è generato da JPQL?
È possibile accedere alla String
SQL da un Hibernate Interceptor
, più precisamente dal metodo Interceptor.html#onPrepareStatement(java.lang.String)
onPrepareStatement
String onPrepareStatement(String sql) Called when sql string is being prepared. Parameters: sql - sql to be prepared Returns: original or modified sql
Se si decide di andare in questo modo, l'opzione migliore è quella estende EmptyInterceptor
e per sostituire solo i metodi che si desidera.
È possibile collegare il vostro intercettore utilizzando la seguente dichiarazione nel vostro persistence.xml
:
<properties>
<property name="hibernate.ejb.interceptor" value="com.acme.MyInterceptor"/>
</properties>
È possibile impostare la proprietà hibernate.show_sql
al vero, allora tutte le SQL verrà mostrato sulla console.
<property name="hibernate.show_sql">true</property>