JPA:如何在设置参数后获取/打印(类型)查询后面的JPQL查询字符串?

如何获取/打印(类型化)查询后面的JPQL查询字符串,即参数设置后? (例如用于调试目的)

一个简单的toString()似乎没有做到这一点……

谢谢

没有“最终的JPQL最终被转换为最终的SQL”。 JPA实现如何生成SQL取决于它,一般参数永远不会被替换为任何String。 SQL是从表达式树等生成的,而不是String。 如果你想插入param值然后自己做,因为它只对你有意义

我知道这是旧的,但目前的答案并不能完全回答原始/根本问题。

我相信Kawu正在寻找JPQL字符串的样子,而不是它是否转换为SQL。 欲望是找到具体的参数。

无论如何Kawu,我一直在寻找相同的东西,因为我的查询结果是偏斜的,我无法分辨参数是什么。 我发现将以下代码添加到persistence.xml就可以了。 我使用EclipseLink,但我确信其他JPA实现有类似这样的东西:

  

这将在您的服务器日志中显示以下内容:

 [EL Fine]: sql: 2016-10-24 16:02:08.577--ServerSession(13483501)--Connection(6214343)--Thread(Thread[27010968@qtp-10395070-0,5,main])--SELECT ID, Name FROM Test WHERE (ID = ?) bind => [] 

对于JBoss用户:在standalone.xml中进行更改。 在该文件中,您将在下找到一个日志记录部分,例如:

                         

默认级别为INFO。 要显示查询等,请在两个位置将级别更改为DEBUG,如下所示:

                         

重新启动JBoss,现在你的控制台充满了喋喋不休。