2016-10-31 3 views
0

このMySQLクエリをHQLに変換して、必要なデータを取得する方法を教えてください。私のコードでMySQLからHQLクエリ

SELECT pu.url, count(sen.content) 
FROM Sentence sen JOIN ProcessedUrl pu 
ON sen.PROCESSED_URL_ID=pu.url_id 
GROUP BY pu.url ORDER BY 2; 

は、マッピングされたフィールド(文章の)ID/URL /日付/セットを持っているPOJO ProcessedUrlあります。

Session session = HibernateUtils.getSession(); 
Transaction transaction = session.beginTransaction(); 

List<ProcessedUrl> result = session.createQuery("proper HQL query", ProcessedUrl.class).getResultList(); 

transaction.commit(); 
session.close(); 
return result; 

、その後、URLごとにresult.getUrl() & result.getSentences().size()を印刷するには、この結果を反復:私のような何かをやってみたかったです。

私のクエリでは、ProcessedUrl内のフィールドを返す必要があります。次に、グループ化されたクエリを返して、テーブルの中に直接格納されていないデータを取得する方法はありますか?このようにすべてのURLのcount()

ありがとうございました。

+1

結果としてList は必要ありません。リストが必要です。各配列は、最初の要素としてurlを持ち、2番目の要素としてcountを持ちます。 http://docs.jboss.org/hibernate/orm/5.2/userguide/html_single/Hibernate_User_Guide.html#hql-aggregate-functions –

+0

これは役に立ちました。ありがとう。 – Saris

答えて

0

私は正しいHQLクエリを見つけたので、もう助けは必要ありません。

List<Object[]> result = session.createQuery("select pu.url, count(sen.content)" 
     + " FROM ProcessedUrl pu" 
     + " JOIN pu.sentences sen " 
     + " GROUP BY pu.url " 
     + " ORDER BY 2", Object[].class).getResultList();