Conversor JPQL para SQL
Pergunta
É possível acessar o SQL que é gerado pelo JPQL?
Gostaria de usar o SQL para criar posteriormente uma visão para meus propósitos.
Estou usando o Hibernate, se isso importa.
Solução
Portanto, você precisa escrever sua própria implementação JPQL: Boa sorte!
Claro que você pode fazer uso de uma implementação JPQL existente, seja hibernada ou eclipselink ou datanucleus ... e como todos são de código aberto, você deve procurar sua base de código.
Outras dicas
É possível acessar o SQL que é gerado pelo JPQL?
Você pode acessar o SQL String
de um Hibernate Interceptor
, mais precisamente do método Interceptor.html#onPrepareStatement(java.lang.String)
OnPreparestatement
String OnPreparestatement(String sql) Called when sql string is being prepared. Parâmetros: sql - sql to be prepared Retornos: original or modified sql
Se você decidir seguir por esse caminho, a melhor opção é estender EmptyInterceptor
e substituir apenas os métodos que você deseja.
Você pode conectar seu interceptador usando a seguinte declaração em seu persistence.xml
:
<properties>
<property name="hibernate.ejb.interceptor" value="com.acme.MyInterceptor"/>
</properties>
Você pode definir o hibernate.show_sql
Propriedade para True, todo o SQL será mostrado no console.
<property name="hibernate.show_sql">true</property>