如何在春季jpa中选择价值和数量?

时间:2013-11-16 21:47:58

标签: spring jpa jpql spring-data spring-data-jpa

我有一个名为gift的表,其中包含字段company_value_id,我想对所有company_value_id,count(company_value_id)进行选择,以便结果将是对象列表,每个对象将包含company_value_id,count(company_value_id)

我使用带有注释的spring jpa如下:

public interface GiftsRepository extends JpaRepository<Gifts, String> {

    @Query("from Gifts g where g.companyGuid = :companyGuid")
    List<Gifts> getGiftsByCompany(@Param("companyGuid") String companyGuid);

}

请告知,谢谢。

2 个答案:

答案 0 :(得分:2)

我能够完成如下:

@Query("select g.value.id,cr.value.name,count(g.value.id) from Gift g where g.user.id=:userId group by g.value")
    List<Object[]> getUserGifts(
            @Param("userId") String userId);

并在服务层中提取值如下:

List<Object[]> results = giftsRepository
                .getUserGifts(userId);
for (Object[] result : results) {
            String id = (String) result[0];
            String name = (String) result[1];
            int count = ((Number) result[2]).intValue();
        }

答案 1 :(得分:0)

您需要在函数中添加一个参数,如下所示:

@Query("from Gifts g where g.companyGuid = :companyGuid")
    List<Gifts> getGiftsByCompany(@Param("companyGuid") String companyGuid,Pageable pageable);

并且可以像这样创建pageabel:

Pageable pageable = new PageRequest(pageIndex, pageSize, Direction.ASC, sortColumn);