2011-08-05 11 views
13

は、それが JPA GROUP BYでSELECT値とCOUNT値を取得する方法は?私のエンティティは男として取得された場合、私はこのクエリのような結果を取得取得する方法

entityManager.createQuery("SELECT m.name AS name, COUNT(m) AS total FROM Man AS m GROUP BY m.name ORDER BY m.name ASC"); 

は、JPAで org.springframework.jdbc.core.RowMapperを使用するには、どのような方法があり、JPAで、名前、IDプロパティを持っていますか?

答えて

35

このクエリを実行すると、通常のようにオブジェクトのリストを直接取得する代わりに、Object[]のリストを取得します。

取得する配列ごとに、最初の要素は行の名前になり、2番目の要素はカウントになります。

JPAでRowMapperを使用することはできません。 RowMapperはJPAと同じフレームワークではないSpringのものです。おそらく、JPAの実装によってはこれが可能ですが、そうするのは賢明ではないと思います。

編集 - コード例:

List<Object[]> results = entityManager 
     .createQuery("SELECT m.name AS name, COUNT(m) AS total FROM Man AS m GROUP BY m.name ORDER BY m.name ASC"); 
     .getResultList(); 
for (Object[] result : results) { 
    String name = (String) result[0]; 
    int count = ((Number) result[1]).intValue(); 
} 
+0

こんにちはBarousse!あなたのフィードバックのために多くのありがとう。もしあなたが持っていれば、 "オブジェクト[]"のリストとしてデータを取り出すことができるサンプルコードをいくつか入れてください。ありがとう。 – Channa

+0

@Channa:答えにコード例を追加しました:) –

+0

こんにちはバウンス!あなたの素晴らしいフィードバックのための多くのおかげで、それはうまく動作:)、良い時間を過ごす! – Channa

関連する問題