Morphia datastore.find() 查询产生 0 个结果,但它与聚合一起工作正常

问题描述 投票:0回答:1

我正在更改代码以将 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();

工作正常。

上述行为的原因可能是什么?

java mongodb dropwizard datastore morphia
1个回答
0
投票

如果您使用 Morphia,您不需要,甚至可能不需要,

PojoCodec
。这可能会引入相互矛盾的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.