我正在尝试从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);
为什么会有空值,我该如何正确地使它按预期工作?