【问题标题】:JPQL to SQL converterJPQL 到 SQL 转换器
【发布时间】:2011-01-22 23:49:53
【问题描述】:

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

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

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

【问题讨论】:

    标签: java sql hibernate jpa jpql


    【解决方案1】:

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

    您可以从 Hibernate Interceptor 访问 SQL String,更准确地说是从方法 Interceptor.html#onPrepareStatement(java.lang.String)

    onPrepareStatement

    字符串 onPrepareStatement(String sql) 在准备 sql 字符串时调用。 参数: sql - 要准备的 sql 返回: 原始或修改后的sql

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 谢谢,但我需要在我的应用程序中以编程方式访问 SQL。
      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2019-04-18
        • 2014-08-02
        • 2018-03-16
        • 2011-09-29
        • 2019-10-01
        • 1970-01-01
        • 2022-12-05
        • 2019-07-13
        • 2021-01-22
        相关资源
        最近更新 更多