我使用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的缺陷 ??
答案 0 :(得分:5)
Hibernate无法将SQL及其参数记录在您想要的同一行中。 Hibernate提供的日志记录(通过在log4j配置中设置log4j.logger.org.hibernate.SQL=debug
和log4j.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了解详情。