2

エンティティがあるとします。

@Entity
public class Person implements Serializable {

    @Id
    private String name;
    private Long age;
    private Boolean isMad;
...
}

そして、カスタム クエリの簡単な (そして不要な) 例を含むリポジトリ:

@Repository
public interface PersonRepository extends PagingAndSortingRepository<Info, String> {

    @Query("select p.isMad, count(*) from Person p group by p.isMad")
    List<Object> aggregateByMadness();
}

このリストを解析するには、次のようにする必要があります。

for (Object element : list) {
    Object[] result = (Object[]) element;
    Boolean isMad = (Boolean) result[0];
    Long count = (Long) result[1];
}

これは面倒です。クエリの結果を POJO のリストに直接キャストできますか?

4

1 に答える 1

2

はい、JPQL 構築式を使用できます。

package com.foo;

public class Madness {

    public Madness(boolean isMad, Number count) { /* ...*/ }
}

そしてあなたのリポジトリで:

@Query("select new com.foo.Madness(p.isMad, count(*)) from Person p group by p.isMad")
List<Madness> aggregateByMadness();
于 2013-06-04T19:50:56.703 に答える