JPQL到SQL转换器

时间:2010-03-02 23:46:33

标签: java sql hibernate jpa jpql

是否可以访问由JPQL生成的SQL?

我想使用SQL稍后为我的目的创建一个视图。

如果重要的话,我正在使用Hibernate。

3 个答案:

答案 0 :(得分:8)

  

是否可以访问由JPQL生成的SQL?

您可以从 Hibernate String 访问SQL Interceptor,更准确地说是从方法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

如果您决定采用这种方式,最好的方法是扩展EmptyInterceptor并仅覆盖您想要的方法。

您可以使用persistence.xml中的以下声明来挂钩拦截器:

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

答案 1 :(得分:3)

您可以将hibernate.show_sql属性设置为true,然后所有SQL都将显示在控制台上。

<property name="hibernate.show_sql">true</property>

答案 2 :(得分:1)

所以你需要编写自己的JPQL实现然后:-)毕竟,将JPQL转换为SQL用于RDBMS数据存储是JPQL实现的。祝你好运!

当然,您可以使用现有的JPQL实现,无论是Hibernate,还是EclipseLink,还是DataNucleus ......并且由于它们都是开源的,您应该去挖掘它们的代码库。