MongoDB Morphia仅使用自定义解码转换器和默认编码转换器

时间:2019-02-26 11:15:53

标签: java mongodb morphia

使用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

如果我删除转换器,则在编码方面一切正常。 有没有办法只使用自定义解码功能并保留默认的编码支持。

1 个答案:

答案 0 :(得分:0)

您需要通过mapper.getConverters().addConverter(new MetaConverter())告诉Morphia您的转换器。