org.hibernate.JDBCExceptionが発生した場合(またはこの例外のサブタイプ)、sqlステートメントはStacktraceに表示されません。
たとえば、次のSQLステートメントを休止状態で実行した場合(テーブルまたはビュー'nonexsiting'がないOracleDBで):
session.createSQLQuery("select * from nonexisting").list();
次のスタックトレースを取得します。
org.hibernate.exception.SQLGrammarException: could not execute query
at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90)
...
Caused by: java.sql.SQLSyntaxErrorException: ORA-00942: Table or view does not exist
...
SQLステートメントはスタックトレースに表示されませんが、Exceptionオブジェクトには情報が格納されており、からアクセスできますexception.getSQL()
。この情報がスタックトレースでも利用できる場合は、デバッグが非常に高速になります。
この情報がスタックトレースで利用できない理由を誰かが知っていますか?または、スタックトレースでこの情報の出力を有効にする方法は?
ちなみに、この例で使用したHibernateバージョンは3.3.1です。