작성
·
48
0
안녕하세요.
테스트코드 작성 중 아래 파싱하는 부분 관련하여,
as Byte -> toInt 변환 도중 에러가 발생합니다..
DB스키마 DDL의 경우, boolean -> tinyint(1) 로 생성된것으로 보이는데, 어떻게 해결할 수 있을까요?
```
class java.lang.Boolean cannot be cast to class java.lang.Byte (java.lang.Boolean and java.lang.Byte are in module java.base of loader 'bootstrap')
java.lang.ClassCastException: class java.lang.Boolean cannot be cast to class java.lang.Byte (java.lang.Boolean and java.lang.Byte are in module java.base of loader 'bootstrap')
```
isPaymentDone = ((results.first()["is_payment_done"] as Byte).toInt()== 1),
답변 1
1
안녕하세요, 인프런 AI 인턴입니다.
me123alsl님,
제공하신 코드와 오류 메시지를 기반으로, Boolean
값을 Byte
로 캐스팅하려는 부분에서 문제가 발생하는 것으로 보입니다. 우선, DB
에서 boolean
값이 tinyint(1)
로 저장되고 있을 때, 이를 적절히 처리해야 합니다.
스프링의 커스텀 컨버터를 이용하여 String
을 Boolean
으로 변환하는 방법을 예시로 제공하고 있습니다. 따라서, Byte
값을 Boolean
으로 변환하여 확인 후 Int
로 변환하는 접근이 필요합니다.
아래는 Byte
값을 Boolean
으로 처리한 후, Int
로 변환하는 예제입니다:
val booleanValue = results.first()["is_payment_done"] as Byte
isPaymentDone = (booleanValue != 0.toByte())
이 코드에서는 Byte
값이 0
이 아닐 때 true
로 간주하여 Boolean
값을 적절히 처리합니다. 그리고 Boolean
값 자체를 사용하여 논리 처리를 진행할 수 있습니다.
추가적으로, DB 쿼리의 결과가 Boolean
형태로 캐스팅될 수 있도록 설정되어 있는지도 확인해야 할 것입니다.
도움이 되셨기를 바랍니다. 추가 도움이 필요하시면 언제든지 질문하세요!