Spo*_*ice 8 spring mongodb spring-data spring-boot
我升级到 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 编解码器调整为标准编解码器,但它保留在旧版编解码器中。
我找到了问题的解决方案。需要new UuidCodec(UuidRepresentation.STANDARD)放在第一位。我的代码如下所示:
private static final CodecRegistry CODEC_REGISTRY = CodecRegistries.fromProviders(
Arrays.asList(new UuidCodecProvider(UuidRepresentation.STANDARD),
new ValueCodecProvider(),
new BsonValueCodecProvider(),
new DBRefCodecProvider(),
new DBObjectCodecProvider(),
new DocumentCodecProvider(new DocumentToDBRefTransformer()),
new IterableCodecProvider(new DocumentToDBRefTransformer()),
new MapCodecProvider(new DocumentToDBRefTransformer()),
new GeoJsonCodecProvider(),
new GridFSFileCodecProvider(),
new Jsr310CodecProvider(),
new BsonCodecProvider()));
Run Code Online (Sandbox Code Playgroud)
这种行为不太好,可能是一个错误。希望这对你们中的一些人有所帮助。
| 归档时间: |
|
| 查看次数: |
1086 次 |
| 最近记录: |