我想在Hibernate中执行审计日志记录生成的SQL语句。我写了自定义Interceptor,它扩展了EmptyInterceptor。我重写了 onPrepareStatement 方法来获取生成的SQL。但是当我调试这段代码时,我只会生成没有这样的参数的SQL。
INSERT INTO TableA(Col1,Col2,Col3) VALUES(?,?,?)
如何从Hibernate
获取包含这样的参数值的完整SQL语句INSERT INTO TableA(Col1,Col2,Col3) VALUES("Value1","Value2","Value3")
答案 0 :(得分:2)
在hibernate cfg中,您可以将hibernate.show_sql属性设置为true,这将导致Hibernate将perpared语句(没有绑定到查询的参数值)输出到stdout。
要记录预编译语句和绑定到它们的参数列表,请在commons-logging(或基础日志系统)配置中设置log4j.logger.org.hibernate.SQL = DEBUG。
答案 1 :(得分:2)
接受的答案对我不起作用(Postgres版本8.3.7-1,驱动程序版本8.1-407)。
我还必须在日志记录配置中将“type”选项设置为DEBUG:
log4j.logger.org.hibernate.type=DEBUG
答案 2 :(得分:0)
看起来,根据你的log4j版本,这仍然是一个bug
答案 3 :(得分:0)
如何使用众多“JDBC包装器”之一呢?
没有特别的顺序: