2010-08-10 55 views
0

有沒有辦法使用Hibernate將Persistable對象轉換爲SQL插入語句?這必須是可能的,因爲這就是Hibernate在後臺執行的操作,但是我只需要將SQL Stmt寫入日誌文件,以便在出現數據庫故障並且保存Hibernate對象失敗的情況下進行錯誤處理。將Hibernate持久化對象轉換爲SQL插入語句

+0

僅僅因爲Hibernate執行它 - 生成SQL語句 - 在幕後並不意味着您正在尋找的是支持的。 Hibernate的目標是管理SQL數據庫中對象的生命週期;它不是一個SQL生成器。 – 2010-08-11 02:34:26

+0

你需要一個jdbc代理驅動程序,這個問題本質上是一個重複的http://stackoverflow.com/questions/3403361/how-to-intercept-the-hibernate-generated-sql/3403571#3403571 – 2010-08-11 08:58:20

回答

1

這是一個內置功能。您可以配置Hibernate日誌要做到這一點:

log4j.logger.org.hibernate.SQL=DEBUG, SQL_APPENDER 
log4j.additivity.org.hibernate.SQL=false 

see here.
編輯:如果你想看到的parmeter值也許你可以使用this。我沒有嘗試,但如果它是有用的,請張貼您的經驗。

+0

但是,這給了我SQL採用「?」的PreparedStatement格式的語句而不是參數。我正在尋找一些能夠編寫一個準備好執行的SQL進行日誌記錄的東西,然後可以將其讀取並執行。 – udit 2010-08-10 22:19:09

+1

我不會真的稱此爲「內置功能」,因爲它只是爲了調試目的而記錄的內容。一個內置的功能可以讓Hibernate以編程方式公開你的訪問權限。 – 2010-08-11 02:33:42

+0

+1用於P6Spy鏈接。這應該顯示具有實際值的語句。 – 2010-08-11 07:29:33