![[JPA] Spring Data Jpa 쿼리문, ClassCastException 예외](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fv4AXV%2FbtsnLvYFMaa%2FpVPyIdZHWlskaKWsGw4UK0%2Fimg.png)
[JPA] Spring Data Jpa 쿼리문, ClassCastException 예외legacy/JPA2023. 7. 17. 17:52
Table of Contents
jpa로 쿼리문을 작성하는데 자꾸 예외가 터졌는데 조금 헤맸다.
잘못된 쿼리문
Optional<LoanHistory> existsByBookNameAndUserIdAndIsReturn
(String bookName, Long userId, boolean isReturn);
난 위의 쿼리문이 다음과 같은 SQL문을 기대했고 LoanHistory 객체가 반환될 것이라 생각했다.
SELECT * FROM loan_history WHERE book_name = ?
AND user_id = ? AND is_return = ?
근데 아래와 같이 ClassCastException 예외가 터졌다.
Boolean 타입이 LoanHistory 타입으로 타입 변환이 안 된다고 한다.
Spring Data Jpa에서 exists 쿼리문은 boolean 타입을 반환한다. 나는 객체를 반환받기 기대했으니 역시 예외가 터질 수밖에 없다.
수정된 코드
exists -> find 로 변경하면 된다. find의 경우에는 객체를 반환한다.
Optional<LoanHistory> findByBookNameAndUserIdAndIsReturn
(String bookName, Long userId, boolean isReturn);
결론
아래를 참고하자!