Mongo自动POJO映射具有空值的对象\

时间:2019-06-01 18:32:17

标签: java mongodb

我正在尝试从MongoDB获取文档并将它们映射到我的对象。插入效果很好。检索集合似乎也包含了所有内容。但是我无法弄清楚为什么反序列化对象无法按预期工作。我是Java的新手,我可能只是忘记了一些东西,没有正确理解文档。但是根据我的阅读,它应该可以正常工作。

我有这个代码

[...]

CodecProvider pojoCodecProvider = PojoCodecProvider.builder().automatic(true).build();
CodecRegistry pojoCodecRegistry = fromRegistries(MongoClientSettings.getDefaultCodecRegistry(), fromProviders(pojoCodecProvider));

_mongoClient = MongoClients.create(mongoClientURI);
_mongoDataBase = _mongoClient.getDatabase(dbName).withCodecRegistry(pojoCodecRegistry);

[...]

然后,我使用另一个函数来获取集合并将其转换为ArrayList:

MongoCollection<Document> collection = _mongoDataBase.getCollection(collectionName);

Document query = new Document();
List<StockTakingItem> stockItems = collection.find(query, StockTakingItem.class).into(new ArrayList<StockTakingItem>());

尽管如果我显示这些值,则:

对于 MongoCollection集合,我知道了(因此具有正确值的文档就在其中)。

{ "_id" : "asdfasdfasdf", "Description" : "aaaaaaaaaaaaaaaa description ", "Note" : "nnnnnnnnnnnnnnnn Another note " }

但是我的StockTakingItem中包含空值( id 除外)

StockTakingItem:id: 'asdfasdfasdf', Description: 'null', Note: 'null

编辑:

StockTakingItem类:

public class StockTakingItem {

   @BsonId
   String _id;

   String _description;

   String _note;

   [getters and setters]
}

此插入代码有效:

var collection = _mongoDataBase.getCollection(collectionName);
collection.insertOne(docToInsert);

为什么会有空值,我该如何正确地使它按预期工作?

0 个答案:

没有答案