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.

È stato utile?

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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top