出于优化的目的,我一直在努力在我的项目中捕获非常复杂的JPA查询的确切SQL,但到目前为止我还无法做到这一点。我尝试了以下几种方法:
1)尝试通过在我的logback.xml中添加以下内容并启用show_SQL,通过logback启用hibernate日志
<logger name="org.hibernate.type" level="ALL" />
<logger name="org.hibernate" level="TRACE">
<appender-ref ref="fdpAdminAppender" />
</logger>2)尝试在Jboss AS7和postgres上使用P6spy-2驱动程序,但就是不能工作。它给出了以下异常。
com.p6spy.engine.spy.P6SpyDriver cannot be cast to javax.sql.XADataSource3)在JBoss AS 7中启用了内置数据源间谍,并且工作正常。但是日志显示了太多的数据,所有这些对我来说都是无用的,因为它们再次将值附加为'?‘。即使我可以在这里获得完整的SQL语句,我的问题也会得到解决。
到目前为止,我只成功地完成了步骤3,但要么我遗漏了什么,要么它以这种方式工作,无论是哪种情况,我的实际目的都没有解决。因此,请帮助我从JPA获得实际的SQL查询。我不关心我如何得到它,我只需要得到它。在开发过程中,我曾多次使用值来验证JPA生成的实际SQL。奇怪的是,为什么没有标准的方法来做到这一点。
发布于 2014-03-18 19:13:34
只需在‘persistence.xml’中添加以下内容:
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>确保将其放入<properties>标记中,如下所示:
<persistence>
<persistence-unit>
<properties>
<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>
</properties>
</persistence-unit>
</persistence>祝你好运:)
https://stackoverflow.com/questions/22475810
复制相似问题