是否可以访问由JPQL生成的SQL?
您可以String从HibernateInterceptor访问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)
因此,您需要编写自己的 JPQL 实现 :-) 毕竟,将 JPQL 转换为 RDBMS 数据存储的 SQL 就是 JPQL 实现。祝你好运!
当然,您可以利用现有的 JPQL 实现,无论是 Hibernate、EclipseLink 还是 DataNucleus...并且由于它们都是开源的,因此您应该深入研究它们的代码库。
| 归档时间: |
|
| 查看次数: |
5633 次 |
| 最近记录: |