2017-08-08 17 views
-1

私はデフォルトのSpring Web MVCアプリケーションを持っていますが、私はJPAを使用していて、何らかの種類の要約ビューページを作成する必要があります。たとえば、私は3つのオブジェクトを持っています。私は、SQLクエリで非常に良いだから何があるので、家が持っているこの例では車や人は、私のページビューにおけるので、私は、JPA要約オブジェクトを取得する最も良い方法は何ですか?

House 1: 5 Cars, 6 Persons 
House 2: 3 Cars, 3 Persons 
House 3: 6 Cars, 2 Persons etc... 
私はネイティブのクエリを使用して考えていた

ような何かをする必要はありませんJPAには文字列のMAPのように戻ってくるものはなく、JPAのパフォーマンスについては何も知らない。

+0

要件が[公式のJPAドキュメント](http://docs.oracle.com/html/E13946_04/ejb3_langref.html)に既に記載されているため、この質問を閉じるために投票しています。 – manish

+0

だから、公式の文書には何があるのか​​尋ねる必要はないかもしれませんが、ドキュメントに書かれているほとんどすべてのことを考えると、問題は次のようなものです:私はそれを何かのパラノイアがあるのですべてがここにあると思う)私は似たような質問や答えを見つけられなかったので、私は尋ねた。私は悪いですか? –

答えて

0

JPAクエリ

SELECT 
    h 
    , COUNT(c) 
    , COUNT(p) 
FROM 
    House h 
LEFT JOIN 
    h.cars c 
LEFT JOIN 
    h.persons p 
GROUP BY 
    h 

List<Object[]>を取得するためにentityManager.createQuery(query).getResultList()として実行することができます。

Listの各要素は、3つの値(SELECT句の3つの値に対応)の配列になります。最初の値はタイプHouseSELECT hのため)で、2番目と3番目の値はタイプLongです。

JPQLからSQLへの変換が非常に高速であるため、同じアプリケーションからのネイティブクエリを実行すると、クエリのパフォーマンスが大幅に異なることはありません。

関連する問題