반응형
꺼낸 데이터를 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)되는 가보다 하고 넘어가긴 했다.
혹시 답을 아는 사람이 있다면 꼭 알려주길..ㅠ
+ 나랑 동일한 경험을 한 사람..
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 |