Morphia datastore.find() query yields 0 results but it works fine with aggregate

33 views Asked by At

I am making code changes to upgrade to MongoDB 5 for a java dropwizard application. Upgraded versions mongodb-driver-sync : 4.10.2 morphia-core: 2.3.8

For test case setup I have used this code :

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();

Saved events using datastore.save(event) no issue, but while retrieving events

List<Event> events = datastore.find(Event.class).iterator().toList();;

yields 0 results while

Aggregation<Event> temp = datastore.aggregate(Event.class);
        List<Event> aggList =  temp.execute(Event.class).toList();

works fine.

What could be the reason for above mentioned behaviour?

1

There are 1 answers

0
evanchooly On

If you're using Morphia you don't need, or probably even want, PojoCodec. That might be introducing conflicting resolutions.