小编Spo*_*ice的帖子

Spring Boot 标准 UUID 编解码器不适用于 AbstractMongoClientConfiguration

我升级到 Spring Boot 2.2.0.RELEASE 并想用 AbstractMongoClientConfiguration 替换现在已弃用的 AbstractMongoConfiguration。我在用

codecRegistries.add(CodecRegistries.fromCodecs(new UuidCodec(UuidRepresentation.STANDARD)));
Run Code Online (Sandbox Code Playgroud)

将 MongoDB 中的 UUID Codec 设置为 STANDARD (UUID) 而不是 Legacy Codec (LUUID)。在查看数据库时,编解码器保持旧格式。有其他人遇到过同样的问题吗?

旧实现(工作):

@Override
public MongoClient mongoClient() {
CodecRegistry codecRegistry =
                CodecRegistries.fromRegistries(CodecRegistries.fromCodecs(new UuidCodec(UuidRepresentation.STANDARD)),
                        MongoClient.getDefaultCodecRegistry());
        return new MongoClient(new ServerAddress(address, port), MongoClientOptions.builder().codecRegistry(codecRegistry).build());
}
Run Code Online (Sandbox Code Playgroud)

新实现(不工作):

@Override
public MongoClient mongoClient() {
        List<CodecRegistry> codecRegistries = new ArrayList<>();
        codecRegistries.add(CodecRegistries.fromCodecs(new DocumentCodec()));
        codecRegistries.add(CodecRegistries.fromCodecs(new UuidCodec(UuidRepresentation.STANDARD)));
        CodecRegistry codecRegistry = CodecRegistries.fromRegistries(codecRegistries);

        return MongoClients.create(MongoClientSettings.builder()
                                                      .codecRegistry(codecRegistry)
                                                      .applyConnectionString(new ConnectionString(connectionString))
                                                      .build());
}
Run Code Online (Sandbox Code Playgroud)

我希望数据库中的 UUID 编解码器调整为标准编解码器,但它保留在旧版编解码器中。

spring mongodb spring-data spring-boot

8
推荐指数
1
解决办法
1086
查看次数

标签 统计

mongodb ×1

spring ×1

spring-boot ×1

spring-data ×1