JPQL到SQL转换器

Jav*_*cky 5 java sql hibernate jpa jpql

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

我想使用SQL以后为我的目的创建一个视图.

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

Pas*_*ent 8

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

您可以StringHibernateInterceptor访问SQL ,更准确地说是从方法中访问SQLInterceptor.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>
Run Code Online (Sandbox Code Playgroud)


Dat*_*eus 1

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

当然,您可以利用现有的 JPQL 实现,无论是 Hibernate、EclipseLink 还是 DataNucleus...并且由于它们都是开源的,因此您应该深入研究它们的代码库。