Inflearn brand logo image

인프런 커뮤니티 질문&답변

me123alsl님의 프로필 이미지
me123alsl

작성한 질문수

견고한 결제 시스템 구축

가상의 Checkout 기능 구현

테스트 코드 중 isPaymentDone 변환

작성

·

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)로 저장되고 있을 때, 이를 적절히 처리해야 합니다.

스프링의 커스텀 컨버터를 이용하여 StringBoolean으로 변환하는 방법을 예시로 제공하고 있습니다. 따라서, 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 형태로 캐스팅될 수 있도록 설정되어 있는지도 확인해야 할 것입니다.

도움이 되셨기를 바랍니다. 추가 도움이 필요하시면 언제든지 질문하세요!

참고 문서: Spring Data JDBC Convertor

me123alsl님의 프로필 이미지
me123alsl

작성한 질문수

질문하기