2010-07-13 66 views
4

在hibernate查詢中的JBoss內部某種方式我遇到了一個留下ResultSet的錯誤。此代碼是插入自定義數據類型。如何從ResultSet中重建sql查詢

這將是很好,如果我可以簡單做rs.getStatement()。toString()並完成它,但不幸的是不會放棄任何關於進入它的sql語句。我正在考慮用((PreparedStatement)rs.getStatement())。getMetaData()做些什麼。

我真的希望hibernate在遇到錯誤時能提供更多的信息。 有沒有人有一個很好的解決方案來幫助揭示發生異常時使用哪個表和哪個列?

回答

1

您可以調試Hibernate的一種方法是打開其詳細日誌記錄。

例如,您可以通過開啓org.hibernate.SQL的日誌記錄來記錄所有SQL語句執行時的日誌。從這裏開始,您應該能夠縮小在您的例外之前執行的最後一條語句。

Documentation can be found here

+0

日誌會指出哪一個導致錯誤? – Mike 2010-07-15 01:16:14

0

獲取ResultSet的元數據不會讓您獲取傳入的信息。在Hibernate中,您可以將語句輸出到日誌文件。

大多數JDBC驅動程序允許您設置跟蹤以便調試。

+0

如果日誌文件顯示一串sql語句,您如何找到導致錯誤的匹配項? – Mike 2010-07-15 01:14:08

+0

@Mike - 那麼最好的選擇就是查看JDBC驅動程序跟蹤。大多數司機會支持這一點,如果有任何錯誤被髮回給客戶,他們會告訴你。 (客戶端可以是應用程序服務器)。你使用的是什麼數據庫,或者特別是你在使用什麼驅動程序(不是Application Server包裝程序,儘管在某些情況下它們可能支持給你更多的細節)? – 2010-07-15 13:04:16

+0

沒有JDBC錯誤。該錯誤出現在由休眠調用的自定義數據類型轉換器中。 – Mike 2010-07-17 03:36:00

2

只需在Hibernate配置屬性中將hibernate.show_sql屬性設置爲true,即可啓用SQL日誌記錄。

由於where子句不可用,這比檢查結果集元數據更可靠。

+0

如果日誌文件顯示一串sql語句,那麼如何找到導致錯誤的匹配項? – Mike 2010-07-15 01:13:38