如何查看JPA发出的SQL查询?

2022-08-31 06:51:55

当我的代码发出这样的调用时:

entityManager.find(Customer.class, customerID);

如何查看此调用的 SQL 查询?假设我无权访问数据库服务器来分析/监视调用,有没有办法在我的IDE中记录或查看JPA调用发出的相应SQL查询?我正在使用jTDS驱动程序反对SQL Server 2008 R2。


答案 1

日志记录选项是特定于提供程序的。您需要知道您使用哪种 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.NativeDEBUG


答案 2

此外,如果您使用的是 EclipseLink 并希望输出 SQL 参数值,则可以将此属性添加到持久性.xml文件中:

<property name="eclipselink.logging.parameters" value="true"/>

推荐