Допустим, у меня есть класс дел:
final case class Question[+A <: AnswerType](title: List[QuestionLocale],
answers: List[A],
id: UUID)
Мне нужно написать кодек монго для Вопроса для каждого типа AnswerType, то есть
final case class MultipleChoiceText(answers: List[String],
correct: Boolean,
id: UUID) extends AnswerType
Макрос Монго Macros.createCodecProviderIgnoreNone[A]
не работает для Question[MultipleChoiceText]
Я создал собственный кодек:
class QuestionCodecProvider[A <: AnswerType: ClassTag] extends CodecProvider {
private val questionct: Class[Question[A]] =
implicitly[ClassTag[Question[A]]].runtimeClass.asInstanceOf[Class[Question[A]]]
override def get[T](clazz: Class[T], registry: CodecRegistry): Codec[T] = {
if (questionct.isAssignableFrom(clazz)) {
new DocumentCodec(registry).asInstanceOf[Codec[Question[A]]]
}
null
}
}
В настоящее время возвращается ошибка:
2019-06-13T07:50:16,397Z - ERROR - Can't find a codec for class com.example.
org.bson.codecs.configuration.CodecConfigurationException: Can't find a codec for class com.example.
Любойпомощь будет оценена.