如何查看JPA发出的SQL查询?
当我的代码发出这样的调用时:
entityManager.find(Customer.class, customerID);
如何查看此调用的 SQL 查询?假设我无权访问数据库服务器来分析/监视调用,有没有办法在我的IDE中记录或查看JPA调用发出的相应SQL查询?我正在使用jTDS驱动程序反对SQL Server 2008 R2。
当我的代码发出这样的调用时:
entityManager.find(Customer.class, customerID);
如何查看此调用的 SQL 查询?假设我无权访问数据库服务器来分析/监视调用,有没有办法在我的IDE中记录或查看JPA调用发出的相应SQL查询?我正在使用jTDS驱动程序反对SQL Server 2008 R2。
日志记录选项是特定于提供程序的。您需要知道您使用哪种 JPA 实现。
休眠(见这里):
<property name = "hibernate.show_sql" value = "true" />
EclipseLink(请参阅此处):
<property name="eclipselink.logging.level" value="FINE"/>
OpenJPA(见这里):
<property name="openjpa.Log" value="DefaultLevel=WARN,Runtime=INFO,Tool=INFO,SQL=TRACE"/>
DataNucleus(见这里):
将日志类别设置为某个级别,如 。DataNucleus.Datastore.Native
DEBUG
此外,如果您使用的是 EclipseLink 并希望输出 SQL 参数值,则可以将此属性添加到持久性.xml文件中:
<property name="eclipselink.logging.parameters" value="true"/>