我有一个像这样的实体类。
class MyEntity {
@BsonId
private String id; // !OBJECT_ID but STRING
@BsonProperty("some_property")
private String someProperty;
}
它适用于带有 pojo 编解码器的纯 mongodb 驱动程序。
MyEntity(someProperty=...)
MyEntity(someProperty=...)
MyEntity(someProperty=...)
现在,当我尝试在我的 Spring Boot 应用程序中使用该模块时,我发现只有id
字段被映射。
template.find(Query.query(Criteria.where("...").is("...")).limit(10),
MyEntity.class,
"some_collection")
.doOnNext(v -> {
log.debug("v: {}", v);
})
.blockLast();
MyEntity(id=..., someProperty=null)
MyEntity(id=..., someProperty=null)
MyEntity(id=..., someProperty=null)
我已经知道我可以(也许应该)用@Field
注释来注释这些字段。
但是实体类驻留在不同的模块中。
我已经尝试添加一个 pojo 编解码器并且没有运气。
@Bean
public MongoClientSettingsBuilderCustomizer mongoClientSettingsBuilderCustomizer() {
return b -> {
final CodecRegistry registry = CodecRegistries.fromRegistries(
MongoClientSettings.getDefaultCodecRegistry(),
CodecRegistries.fromProviders(PojoCodecProvider.builder().automatic(true).build()));
b.codecRegistry(registry);
};
}
我怎样才能让 Spring Boot 在@BsonProperty
没有的情况下工作@Field
?