У меня проблема с использованием пользовательских преобразователей Morphia для отображения вложенных документов.В моем сценарии у меня есть неизменяемая сущность без конструктора null-arg.Эта сущность используется как встроенная сущность в моей основной сущности.Поскольку он неизменен, я должен объявить пользовательский конвертер и переопределить метод декодирования, чтобы создать мою сущность, используя шаблон Builder.Он работает нормально:
public class MetaConverter extends TypeConverter implements SimpleValueConverter {
public MetaConverter() {
super(Meta.class);
}
@Override
public Object decode(Class<?> aClass, Object o, MappedField mappedField) {
BasicDBObject metaDBObject = (BasicDBObject) o;
return new Meta.Builder(metaDBObject.getDate("created").toInstant()
, metaDBObject.getDate("updated").toInstant())
.setVersion(metaDBObject.getString("version"))
.build();
}
Однако, когда я пытаюсь создать новый документ.Сбой:
org.bson.codecs.configuration.CodecConfigurationException: Can't find a codec for class aaa.bbb.Meta
Если я уберу конвертер, все будет нормально работать в кодировке.Есть ли способ использовать только пользовательские функции декодирования и сохранить поддержку кодирования по умолчанию.