Question

Est-il possible d'accéder au SQL généré par JPQL?

Je voudrais utiliser SQL pour ensuite créer une vue pour mes besoins.

J'utilise Hibernate si elle compte.

Était-ce utile?

La solution

Alors vous devez écrire votre propre implémentation de JPQL alors :-) Après tout, la conversion JPQL en SQL pour un datastore SGBDR est ce que une implémentation JPQL est. Bonne chance!

Bien sûr, vous pouvez utiliser une implémentation existante JPQL bien, que ce soit Hibernate, ou EclipseLink, ou DataNucleus ... et comme ils sont tous open source vous devriez aller et creuser dans leur base de code.

Autres conseils

  

Est-il possible d'accéder au SQL généré par JPQL?

Vous pouvez accéder à la String SQL à partir d'un Mise en veille prolongée Interceptor , plus précisément de la méthode 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

Si vous décidez d'aller dans cette voie, la meilleure option est de s'étend EmptyInterceptor et pour remplacer uniquement les méthodes que vous voulez.

Vous pouvez brancher votre intercepteur en utilisant la déclaration suivante dans votre persistence.xml:

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

Vous pouvez définir la propriété hibernate.show_sql true, tout le SQL sera affiché sur la console.

<property name="hibernate.show_sql">true</property>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top