我正在更改代码以将 java dropwizard 应用程序升级到 MongoDB 5。 升级版 mongodb-驱动程序-同步:4.10.2 吗啡核心:2.3.8
对于测试用例设置,我使用了这段代码:
server = new MongoServer(new MemoryBackend());
InetSocketAddress serverAddress = server.bind();
String connectionString = "mongodb://" + serverAddress.getHostString() + ":" + serverAddress.getPort();
client = MongoClients.create(connectionString);
CodecProvider pojoCodecProvider = PojoCodecProvider.builder().automatic(true)
.build();
CodecRegistry pojoCodecRegistry = fromRegistries(CodecRegistries.fromCodecs(new UuidCodec(UuidRepresentation.JAVA_LEGACY)), getDefaultCodecRegistry()
, fromProviders(pojoCodecProvider));
MapperOptions mapperOptions = MapperOptions.builder()
.codecProvider(pojoCodecRegistry)
.build();
datastore = Morphia.createDatastore(client, "events", mapperOptions);
datastore.getMapper().mapPackageFromClass(Event.class);
datastore.ensureIndexes();
使用保存的事件
datastore.save(event)
没问题,但是在检索事件时
List<Event> events = datastore.find(Event.class).iterator().toList();;
产生 0 个结果,同时
Aggregation<Event> temp = datastore.aggregate(Event.class);
List<Event> aggList = temp.execute(Event.class).toList();
工作正常。
上述行为的原因可能是什么?
如果您使用 Morphia,您不需要,甚至可能不需要,
PojoCodec
。这可能会引入相互矛盾的解决方案。