如何在 Spring Data MongoDB 实体中将复杂类型属性保存为 String

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

在我的 Spring Data MongoDB 项目中,我有以下 POJO:

   @Document(collection = "my_entity")
   public class MyEntity {
       private MyProperty myProperty;
   }

我的财产:

   public class MyProperty implements Serializable {
        private String string;
   }

当我在 MongoDB 中保存此类 Entiry 的实例时,它会变成如下所示:

{ "_id" : ...,
  "myProperty" : {
        "string" : "..."
  }
}

我怎样才能以这种形式而不是上面的形式保存属性“myProperty”?:

{ 
  "myProperty" : "..."
}
java spring mongodb spring-data-mongodb
1个回答
0
投票

我怎样才能以这种形式而不是上面的形式保存属性“myProperty”?:

您可以使用自定义转换器,它是一个 Spring Data MongoDB 组件。它用于将对象序列化到 BSON 文档以及从 BSON 文档反序列化对象。

你可以看例子:

public class CustomPropertyConverter implements Converter<MyProperty, String> {

    @Override
    public String convert(MyProperty source) {
        return source.getString();
    }

    @Override
    public MyProperty reverse(String source) {
        MyProperty myProperty = new MyProperty();
        myProperty.setString(source);
        return myProperty;
    }
}

此外,您需要向 Spring Data MongoDB 注册此转换器:

@Document(collection = "my_entity")
public class MyEntity {

    @Convert(CustomPropertyConverter)
    private MyProperty myProperty;

    //...
}

P.s. 希望能帮到你。

请告诉我它是否适合您。

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