JPA에서 count()는 Long Type을 return 함
통계에서 사용하는 쿼리를 만들다보니, (약간은) 부득이 하게 JPA Query Method를 사용하지 않고 @Query annotation을 이용해서 아래처럼 구현하였다.
1 2 3 4 5 |
@Query(value = "SELECT COUNT(id) " + "FROM FooObject fooObject " + "WHERE {some_condition}") List<Integer> findCountByIdAndDateRangeGroupBySomeCondition( @Param("id") String id, @Param("localDate") LocalDate localDate); |
호출하는 쪽의 로직은 아래와 같다.
1 2 3 4 5 6 7 8 9 |
private void checkAllTypeIsAvailable(String id, LocalDate localDate) { List<Integer> counts = fooRepository.findCountByIdAndDateRangeGroupBySomeCondition(id, localDate); for (int count : counts) { // TODO by freeism: long -> int class cast exception if (count % 2 != 0) { throw new CustomException(ErrorCode.INVALID_PARAMETER); } } } |
자세한 로직은 회사 업무상 대외비이기 때문에 약간 이상한 네이밍인 점은 신경쓰지 않기로 하자. 어쨌거나 위의 로직을… 더 보기 »JPA에서 count()는 Long Type을 return 함