寻求Hibernate调试信息改进

xia*_*012 2 debugging hibernate

可能重复:
使用参数值在休眠中打印查询字符串

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

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

insert 
into
    Address
    (address1, address2, city, province) 
values
    (?, ?, ?, ?)
Run Code Online (Sandbox Code Playgroud)

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

我想要的信息如下:

insert 
into
    Address
    (address1, address2, city, province) 
values
    ("XXX address1", "XX address2", "XXX city", "XXX province")
Run Code Online (Sandbox Code Playgroud)

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

Ken*_*han 5

Hibernate无法将SQL及其参数记录在您想要的同一行中.Hibernate提供的日志记录(通过设置log4j.logger.org.hibernate.SQL=debuglog4j.logger.org.hibernate.type=tracelog4j配置)只能记录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
Run Code Online (Sandbox Code Playgroud)

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

您可以参考此博客以获取更多信息.