6

これは簡単な質問だと思いますが、解決方法はわかりません。

spring/Hibernate アプリケーションでは、基準が実行するクエリを表示する必要があります。

show_sql プロパティを使用し、log4j またはその他のログ フレームワークを使用してクエリをログに記録できることはわかっていますが、必要なのはより高いレベルのログ記録です。

私はこのような方法を持っています

public void searchIntegrationClient(IntegrationClientSearchCommand integrationClientSearchCommand,PartialList<IntegrationClient> partialList) {
    Session session = getSession();
    Criteria pageCriteria=session.createCriteria(IntegrationClient.class);
    if(StringUtil.isNotEmpty(integrationClientSearchCommand.getNameCmd())){
        pageCriteria.add(Restrictions.like("name", integrationClientSearchCommand.getNameCmd(), MatchMode.START));
    }

    //adding ordering alphabetically
    pageCriteria.addOrder(Order.asc("name"));


    pageCriteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);

    List<IntegrationClient> list = (List<IntegrationClient>)pageCriteria.list();
    partialList.setPartialResultList(list);
    Criteria countCriteria=session.createCriteria(IntegrationClient.class);
    if(StringUtil.isNotEmpty(integrationClientSearchCommand.getNameCmd())){
        countCriteria.add(Restrictions.like("name", integrationClientSearchCommand.getNameCmd(), MatchMode.START));
    }
    countCriteria.setProjection(Projections.rowCount());
    partialList.setTotalNumberOfRecords(((Integer)countCriteria.uniqueResult()).intValue());

    releaseSession(session);
}

実行されるクエリを表示するには、criteria.list を実行する前に必要ですか?

私が望むようにクエリを表示するための基準APIにユーティリティクラスはありますか?

事前にt​​hnx

4

1 に答える 1

10

JPA Criteria API のユーティリティ クラスについては知りません。ただし、休止状態の永続性レベルで SQL ステートメントを表示する可能性があります。

次の行をpersistence.xmlファイルに追加します。

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

log4j を使用している場合は、org.hibernate.typeのロギング レベルをTRACEに設定することもできます。これにより、ログにさらに詳細な情報が表示されます。これらの行を log4j-config に追加します (もちろん、'FILE' と呼ばれるアダプターが必要です):

<category name="org.hibernate.type">
    <priority value="TRACE"/>
    <appender-ref ref="FILE"/>
</category>

これが役立つことを願っています...

于 2011-08-03T07:23:12.150 に答える