Open DolphaGo opened 2 years ago
class RedisXXXListSerializer(
private val objectMapper: ObjectMapper
) : RedisSerializer<List<XXX>> {
override fun serialize(t: List<XXX>?): ByteArray? {
return if (t == null) {
return null
} else try {
objectMapper.writeValueAsBytes(t)
} catch (ex: Exception) {
throw SerializationException("Could not write JSON: " + ex.message, ex)
}
}
override fun deserialize(bytes: ByteArray?): List<XXX> {
return objectMapper.readValue(bytes, object : TypeReference<List<XXX>>() {})
}
}
위와 같이 serializer를 만들어서 해결함. 코틀린에서 제네릭으로하면 동일한 이슈(LinkedHashMap으로 읽는 현상)이 발생함. 컴파일 시점에 타입을 지정해줘서 해결할 수 있었음
https://stackoverflow.com/questions/49016372/spring-data-redis-cacheable-java-lang-classcastexception-java-util-linkedhashm
https://www.baeldung.com/jackson-linkedhashmap-cannot-be-cast