寻求Hibernate调试信息改进

时间:2011-07-25 13:27:46

标签: hibernate debugging

  

可能重复:
  Print query string in hibernate with parameter values

我使用Hibernate作为持久层。我将 show_sql 设置为 true 以查看调试信息。

但是,我实际上并没有看到完整的信息,因为大多数SQL语句都是这样的:

insert 
into
    Address
    (address1, address2, city, province) 
values
    (?, ?, ?, ?)

参数都是问号,虽然我可以在某些select语句的条件部分看到一些实际数据。

我想要的信息如下:

insert 
into
    Address
    (address1, address2, city, province) 
values
    ("XXX address1", "XX address2", "XXX city", "XXX province")

如何配置以查看这些参数数据,或者这是hibernate的缺陷 ??

1 个答案:

答案 0 :(得分:5)

Hibernate无法将SQL及其参数记录在您想要的同一行中。 Hibernate提供的日志记录(通过在log4j配置中设置log4j.logger.org.hibernate.SQL=debuglog4j.logger.org.hibernate.type=trace)只能记录SQL,并且不同行中的参数如下:

insert 
into
    Address
    (address1, address2, city, province) 
values
    (?, ?, ?, ?)
binding parameter [1] as [VARCHAR] - xxxxxx
binding parameter [2] as [VARCHAR] - xxxxxx
binding parameter [3] as [VARCHAR] - xxxx

如果要使用同一行中的参数记录SQL,则必须使用JDBC代理驱动程序。我已经尝试了log4jdbc并且它可以执行它,它还可以记录每个SQL语句花费的时间并记录导致SQL语句的代码中的行。

您可以参考此blog了解详情。