2013-02-20 1 views
4

J'utilise Spring data jpa 1.2 et je ne trouve quand même pas de résultat de requête agrégé comme celui-ci.comment extraire une requête de fonction d'agrégation avec spring-data-jpa

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

qui fonctionne parfaitement avec le natif JPA

@Entity() 
public class UserEntity { 

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

} 

tout mon dépôt JPA est

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

alors comment puis-je faire une requêtes globales jettent des données de printemps, je trouve absolument rien la documentation

Répondre

8

J'ai trouvé une façon de le faire

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(); 
} 

De cette façon, nous pouvons obtenir des données agrégées ainsi que le nombre réel (enregistrements agrégés)

0

Vous pouvez avoir @Query pour les requêtes personnalisées pour vos unsupporeted méthodes printemps-données.

-1

vous pouvez également utiliser @NativeQuery l'option

Questions connexes