4

私は休止状態のコンソール アプリケーションを開発しており、この記事http://www.mkyong.com/hibernate/how-to-display-hibernate-sql-parameter-values-solution/を参照して P6Spy をセットアップし、何が何であるかを確認します。 Hibernate によって生成された SQL の「(?)」の実際の値。

アプリケーションの起動中に P6Spy によって出力される情報/デバッグ メッセージを確認できるので、セットアップは正常に機能するはずです。ただし、その後、P6Spy は JDBC ステートメントをインターセプトできないようです。hibernate によって生成されたログ (例: Hibernate: insert into Module (projectName, moduleName, projectId) values (?, ?, ?)) から、JDBC ステートメントが既にデータベースに送信されていることを確認できます。

以下は私の設定です:

hibernate.cfg.xml

  • P6Spy ドライバーを使用するように指定済み:<property name="hibernate.connection.driver_class">com.p6spy.engine.spy.P6SpyDriver</property>
  • すでに hibernate.show_sql プロパティをオンにしています: <property name="hibernate.show_sql">true</property>

スパイのプロパティ

  • 実際のデータベース JDBC driver を使用するように既に変更されており、フィルターは false に設定されており、includecategories は既に明示的に何かをログに記録するように設定されています。
module.log=com.p6spy.engine.logging.P6LogFactory
realdriver=oracle.jdbc.driver.OracleDriver
filter=false
dateformat=yyyy.MM.dd HH:mm:ss
excludecategories=
includecategories=error, info, batch, debug,statement,commit,rollback,result
appender=com.p6spy.engine.logging.appender.StdoutLogger

重要な設定を見逃していませんか??

4

3 に答える 3

1

P6Spy を使用したことはありませんが、バインド変数をログに出力することができます。これを log4j.properties または xml ファイルに入れてみてください。

log4j.category.org.hibernate.type=DEBUG、CONSOLE

于 2011-02-18T18:07:35.497 に答える
1

このタイプの問題の通常の原因は、JDBC ドライバーが P6SpyDriver の前にロードされることです。spy.properties で deregisterdrivers=true を設定すると、この問題を回避できます。

ところで - この問題は 2.0-alpha-1 で修正されました。

于 2013-11-15T21:53:23.717 に答える
0

P6Spy最後に、最新バージョンが2003年に戻った古いライブラリであるため、あきらめlog4jdbcます。JDBCステートメントをインターセプトするために呼び出される別の同様の無料のオープンソースを使用します。興味がある場合は、これを参照してください。

于 2011-11-11T06:50:20.617 に答える