任何人都可以解释MappingMongoConverter
(Spring's
接口的MongoConverter
默认实现)如何适用于POJO和Document之间的映射不是那么简单的情况?示例案例:POJO有一个在Document中找不到的附加字段,Document有一个不适合POJO的结构,......
The official Spring documentation似乎缺乏此信息。
示例代码:
while (cursor.hasNext()) {
DBObject obj = cursor.next();
Foo foo = mongoTemplate.getConverter().read(Foo.class, obj);
returnList.add(foo);
}
答案 0 :(得分:1)
文档缺乏,因此不得不深入了解来源。我将分享我的工作。棘手的部分是POJO到BSON的转换:
它首先要做的是在构造函数上查找@PersistenceConstructor
注释。如果未设置首选构造函数,则使用no arg构造函数。 no arg构造函数的无映射很简单。 对于首选构造函数的映射,所有参数都必须存在于BSON
中。如果找不到参数,则会抛出MappingException
。 这意味着BSON
文件可以包含不必映射到构造函数参数的额外字段。这些参数将被忽略。