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

问题描述 投票:0回答:1

我使用Morphia自定义转换器映射嵌入文档时遇到问题。在我的场景中,我有不可变的实体,没有null-arg构造函数。此实体在我的主实体中用作嵌入实体。因为它是不可变的,所以我应该声明自定义转换器并覆盖decode方法以使用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

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

java mongodb morphia
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.