5

最適化を目的として、プロジェクトで非常に複雑な 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 を値で検証する必要性を何度も経験しました。それを行う標準的な方法がないのは奇妙です。

4

1 に答える 1

7

「persistence.xml」内に次を追加するだけです。

<property name="hibernate.show_sql" value="true"/>
<property name="hibernate.format_sql" value="true"/>

次のように、必ず<properties>タグ内に配置してください。

<persistence>
    <persistence-unit>
        <properties>
            <property name="hibernate.show_sql" value="true"/>
            <property name="hibernate.format_sql" value="true"/>
        </properties>
    </persistence-unit>
</persistence>

幸運を :)

于 2014-03-18T11:13:34.473 に答える