4

我正在使用 Spring data jpa 1.2,但无论如何我都找不到像下面这样检索聚合查询结果。

select count(v), date(v.createTimestamp) from UserEntity v
    group by date(v.createTimestamp)

与本机 JPA 完美配合

@Entity()
public class UserEntity {

   @Id
   private long id;
   .
   .
   @Column(columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
   private Timestamp createTimestamp;

}

我的任何 JPA 存储库都是

public interface UserRepository extends JpaRepository<UserEntity, Long>, 
      JpaSpecificationExecutor<UserEntity> {
}

那么如何进行聚合查询抛出 Spring 数据,我在文档中找不到任何内容

4

4 回答 4

8

我找到了一种方法来做到这一点

public interface UserRepository extends JpaRepository<UserEntity, Long>, 
      JpaSpecificationExecutor<UserEntity> {

      @Query(value = "select count(v), date(v.createTimestamp) from UserEntity v group by date(v.createTimestamp)", 
             countQuery = "select count(1) from (select count(1) from UserEntity v group by date(v.createTimestamp)) z")
      public List<Object[]> findCountPerDay();
}

通过这种方式,我们可以获得聚合数据以及实际计数(聚合记录)

于 2014-04-16T11:26:41.277 回答
5

Spring Data 目前不支持“countBy”:

支持“countBy”查询方法

Spring Data JPA 有没有办法使用方法名称解析来计算实体?

于 2013-03-15T10:30:41.477 回答
1

你也可以使用@NativeQuery选项

于 2015-10-27T04:23:29.403 回答
0

您可以使用@Query对spring-data 中不受支持的方法进行自定义查询。

于 2013-03-18T08:04:36.993 回答