2017-09-26 31 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配置文件中設置的。希望這可以幫助