最適化を目的として、プロジェクトで非常に複雑な JPA クエリの正確な SQL をキャプチャしようと懸命に努力してきましたが、これまでのところそうすることができません。私は次の方法を試しました:
1)logback.xmlに以下を入れてshow_SQLを有効にすることで、logback経由で休止状態のログを有効にしようとしました
<logger name="org.hibernate.type" level="ALL" />
<logger name="org.hibernate" level="TRACE">
<appender-ref ref="fdpAdminAppender" />
</logger>
2) Jboss AS7 と postgres で P6spy-2 ドライバーを使用しようとしましたが、うまく動作しませんでした。次の例外が発生します。
com.p6spy.engine.spy.P6SpyDriver cannot be cast to javax.sql.XADataSource
3) JBoss AS 7 で inbuild Datasource スパイを有効にすると、機能しました。しかし、ログはあまりにも多くのデータを示しており、それらはすべて値を「?」として追加するため、役に立ちません。ここで完全な SQL ステートメントを取得する方法を取得できたとしても、私の問題は解決されます。
これまでのところ、ステップ3のみで成功しましたが、何かを見逃しているか、このように機能しているかのどちらかであり、実際の目的は解決されていません。JPAから実際のSQLクエリを取得するのを手伝ってください。どうやって手に入れるかは気にしません。手に入れる必要があるだけです。開発中に、JPA によって生成された実際の SQL を値で検証する必要性を何度も経験しました。それを行う標準的な方法がないのは奇妙です。