一尘不染

使用Hibernate时如何打印带有参数值的查询字符串

hibernate

在Hibernate中是否可以用实际值而不是问号打印生成的SQL查询?

如果Hibernate API无法实现,您将如何建议使用实值打印查询?


阅读 213

收藏
2020-06-20

共1个答案

一尘不染

您需要为以下类别启用日志记录

  • org.hibernate.SQL -设置debug为在执行所有SQL DML语句时记录它们
  • org.hibernate.type-设置为trace记录所有JDBC参数

因此,log4j配置如下所示:

# logs the SQL statements
log4j.logger.org.hibernate.SQL=debug

# Logs the JDBC parameters passed to a query
log4j.logger.org.hibernate.type=trace

第一个等效于hibernate.show_sql=truelegacy
属性,第二个则 打印绑定参数。

另一个解决方案(基于非hibernate)将使用JDBC代理驱动程序,如P6Spy

2020-06-20