yuns

Database 내의 시간과 관련된 column타입 kotlin에서 적용하기 본문

linux, github, module 에러 정리

Database 내의 시간과 관련된 column타입 kotlin에서 적용하기

yuuuun 2023. 12. 31. 00:17
반응형

Kotlin 내의 여러가지 DataType로 시간과 관련된 column을 추가하려 했으나 에러가 발생했다 

"Serializer has not been found for type 'LocalDate'. To use context serializer as fallback, explicitly annotate type or property with @Contextual"

그래서, 다음과 같이 해결함

Serialization.kt 라는 파일명에 아래 코드를 추가했고, (내 코드 상에서의 위치는 내 마음대로 정했을 뿐, 원하는 곳에 선언해주면 됨

@OptIn(ExperimentalSerializationApi::class)
@Serializer(forClass = LocalDate::class)
class LocalDateSerializer : KSerializer<LocalDate> {
    private val formatter: DateTimeFormatter = DateTimeFormatter.ISO_LOCAL_DATE

    override fun serialize(encoder: Encoder, value: LocalDate) {
        encoder.encodeString(value.format(formatter))
    }

    override fun deserialize(decoder: Decoder): LocalDate {
        return LocalDate.parse(decoder.decodeString(), formatter)
    }
}

그리고, 원 코드에 위에 선언한 클래스를 임포트한 뒤, LocalDate로 선언한 곳에 가서 아래와 같이 위에 한 줄을 추가했다.

@Serializable(with = LocalDateSerializer::class)
var startDate: LocalDate,

 

반응형
Comments