2010-10-11 34 views
1

在我的休眠配置show_sql屬性是'真',因爲我沒有使用log4j API的日誌記錄,默認情況下,hibernate顯示查詢'?'標記在Tomcat控制檯中。打印hibernate SQL查詢字符串與日誌參數

在我的情況,我需要打印完整的SQL查詢與參數值由休眠執行到日誌,但我沒有使用log4j API記錄配置調試級別爲org.hibernate.SQLorg.hibernate.type

對於日誌記錄,我們手動將內容寫入文件,所以在這種情況下,任何人都可以告訴我如何將hibernate查詢轉化爲日誌。

回答

0

對我來說,我需要打印帶有這是Hibernate執行到日誌參數值完整的SQL查詢,但我不使用log4j的API進行日誌記錄配置調試級別org.hibernate.SQLorg.hibernate.type

無論您是否使用日誌框架,Hibernate在記錄預準備語句時都會輸出問號。

如果要打印帶有綁定值的「真實查詢」,則必須使用P6Spy(不再移動)或log4jdbc之類的JDBC代理驅動程序。

+0

甚至,如何可以打印帶有問號的這些SQL語句到我們預定義的日誌? – Pawan 2010-10-11 11:09:45

0

正如你所問:「要打印帶這是Hibernate執行到日誌參數值的SQL查詢」

您可以設置以下參數到log4j.properties文件

#following parameters will be used to log the sql parameters 
log4j.logger.org.hibernate.SQL=debug 
log4j.logger.org.hibernate.type.descriptor.sql=trace 

它將與sql參數一起打印查詢以及數據類型。

Hibernate: insert into employee (employee_address, employee_name, id) values (?, ?, ?) 
11:50:40, 209 TRACE [org.hibernate.type.descriptor.sql.BasicBinder] - binding parameter [1] as [VARCHAR] - [Address 0] 
11:50:40, 209 TRACE [org.hibernate.type.descriptor.sql.BasicBinder] - binding parameter [2] as [VARCHAR] - [Employee 0] 
11:50:40, 209 TRACE [org.hibernate.type.descriptor.sql.BasicBinder] - binding parameter [3] as [BIGINT] - [7008] 
11:50:40, 210 DEBUG [org.hibernate.SQL] - insert into employee (employee_address, employee_name, id) values (?, ?, ?) 

請訪問這個帖子有關代碼的詳細信息: - http://techpost360.blogspot.in/2016/10/hibernate-show-sql-with-parameter-values.html