반응형

꺼낸 데이터를 dto로 매핑할 때 보통 jpql의 constructor 방식을 사용한다.

constructor에 보낸 named parameter를 결과로 다시 받아오고 싶어서 아래와 같이 select 절에 logType을 다시 받아오도록 했다.

물론 constructor에 파라미터는 잘 추가되어 있다.

@Query(value = "select new com.event.moneyexchange.MoneyExchangeAllResponse$Data( "
    + "count(DISTINCT l.hno), count(l), sum(l.ival1 + l.ival2), sum(l.ival3 - (l.ival1 + l.ival2)), :logType "
    + ") " +
    "from CommonMoneyExchangeLog l " +
    ...
    )
public Data(Long user, Long count, Long money, Long fee, MoneyExchangeLogType type) {
  this.user = user;
  this.count = count;
  this.money = money;
  this.fee = fee;
  this.type = type;
}

그런데 logType을 추가하기 전에는 잘 되던 게, 이거 하나 추가했다고 서버가 안 뜨는 것이다.. (띠용)

 Unable to locate appropriate constructor on class [com.event.moneyexchange.MoneyExchangeAllResponse$Data]. Expected arguments are: long, long, long, long
[cause=org.hibernate.PropertyNotFoundException: no appropriate constructor in class: com.event.moneyexchange.MoneyExchangeAllResponse$Data]

 

아무리 구글링해도 정확히 해결한 사람을 보기가 힘들어

constructor로 받아올 때는 결과 값이 아닌 값들은 자동 생략(omit)되는 가보다 하고 넘어가긴 했다.

혹시 답을 아는 사람이 있다면 꼭 알려주길..ㅠ

 

+ 나랑 동일한 경험을 한 사람..

https://stackoverflow.com/questions/73691528/spring-boot-add-query-parameter-into-the-select-statement

 

Spring Boot Add Query Parameter Into the Select Statement

I have a query like so (which i put one of the parameters of the method into the DTO projection): @Query("SELECT new com....dto.SomeDTO(x.id, x.name, :abc) FROM SomeEntity x WHERE x.property =

stackoverflow.com

 

728x90
반응형

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

[webClient] 301 move permanently  (0) 2023.01.03
[ssl-https] in localhost  (0) 2023.01.02
[spring-jpa] inner class constructor  (0) 2022.12.09
[ExceptionHandler] 컨트롤러 에러처리  (0) 2022.11.23
[web] file download inside jar  (0) 2022.11.02

+ Recent posts