반응형

jpql 에서 inner class로 데이터를 받고 싶은 경우가 있다.

@Query에서 dto로 바로 받을 수 있는데, 이 때 .으로 inner class를 표시하면 아래와 같이 에러가 난다.

java.lang.IllegalArgumentException: org.hibernate.QueryException: could not instantiate class

static inner class를 지칭할 때는 . 이 아닌 $로 해야한다.

public class MoneyExchangeAllResponse {
  private Data total;
  
  @Getter
  @Setter
  public static class Data{
    private Long user;
    private Long count;
    private Long money;
    private Long fee;

    public Data(Long user, Long count, Long money, Long fee) {
      this.user = user;
      this.count = count;
      this.money = money;
      this.fee = fee;
    }
  }
}


@Query(value = "select new com.event.moneyexchange.MoneyExchangeAllResponse$Data( "
")
...

 

그리고 jqpl의 count는 long을 반환한다..ㅋ

728x90
반응형

'개발 > spring' 카테고리의 다른 글

[ssl-https] in localhost  (0) 2023.01.02
[spring-jpa] constructor에는 쿼리 결과만  (0) 2022.12.13
[ExceptionHandler] 컨트롤러 에러처리  (0) 2022.11.23
[web] file download inside jar  (0) 2022.11.02
[request part] file upload  (0) 2022.10.31

+ Recent posts