0

我有一个像这样的实体类。

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

4

0 回答 0