2017-09-26 5 views
0

データベースでどのようなクエリが実行されているかを知る必要があるため、改善できるかどうか確認できます。TypedQueryからネイティブSQLクエリを見つける

TypedQuery<OrderItem> orderItemTypedQuery = typedQuery.setParameter(OrderItemCriteria.CUSTOMER_ID_PARAM, criteria.getCustomerId()); 

String sqlQuery=orderItemTypedQuery.unwrap(org.hibernate.Query.class).getQueryString(); 

次のクエリが示されている:

次のコードは、クエリを作成するために使用される

select generatedAlias0 from OrderItem as generatedAlias0 left join generatedAlias0.order as generatedAlias1 where (generatedAlias0.status in (:param0)) and (generatedAlias0.hidden=:param1) and (generatedAlias0.customer.id=:param2) and (generatedAlias0.linkedOrderItem is null) order by generatedAlias1.id desc, generatedAlias0.id desc 

上記のクエリである(parameteresが設定されていない)ではないネイティブ、Iデータベース上で何が実行されているのかを調べて、クエリが遅くて最適化が必要かどうかを調べることができます。

おかげ

答えて

0

これを達成するための最良の方法は私がネイティブクエリがどのように見えるかを確認することが許され、ログを有効にしました。 これは私がこれを正しく理解していれば、このパラメータは異なる場所に設定されている

<prop key="hibernate.show_sql">true</prop> 

次のプロパティを設定することによって行われた、一部の人々は彼らのログプロパティ(構文が異なる覚えて)その構成で 他にそれを設定します。 私の場合、これはentityManagerプロパティを扱うXML設定ファイルで設定されています。希望により、

関連する問題