在我的 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" : "..."
}
我怎样才能以这种形式而不是上面的形式保存属性“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. 希望能帮到你。
请告诉我它是否适合您。