У меня есть вопрос. Я использую версию 2.x, посмотрите исходный код. MappingMongoConverter.class:
@Nullable
private <S> S read(TypeInformation<S> type, @Nullable Bson bson, ObjectPath path) {
if (null == bson) {
return null;
} else {
TypeInformation<? extends S> typeToUse = this.typeMapper.readType(bson, type);
Class<? extends S> rawType = typeToUse.getType();
if (this.conversions.hasCustomReadTarget(bson.getClass(), rawType)) {
return this.conversionService.convert(bson, rawType);
} else if (DBObject.class.isAssignableFrom(rawType)) {
return bson;
} else if (Document.class.isAssignableFrom(rawType)) {
return bson;
} else if (typeToUse.isCollectionLike() && bson instanceof List) {
return this.readCollectionOrArray(typeToUse, (List)bson, path);
} else if (typeToUse.isMap()) {
return this.readMap(typeToUse, bson, path);
} else if (bson instanceof Collection) {
throw new MappingException(String.format("Cannot convert %1$s of type %2$s into an instance of %3$s! Implement a custom Converter<%2$s, %3$s> and register it with the CustomConversions. Parent object was: %4$s", bson, BasicDBList.class, typeToUse.getType(), path));
} else if (typeToUse.equals(ClassTypeInformation.OBJECT)) {
return bson;
} else {
Document target = bson instanceof BasicDBObject ? new Document((BasicDBObject)bson) : (Document)bson;
MongoPersistentEntity<?> entity = (MongoPersistentEntity)this.mappingContext.getPersistentEntity(typeToUse);
if (entity == null) {
throw new MappingException(String.format("Expected to read Document %s into type %s but didn't find a PersistentEntity for the latter!", target, typeToUse.getType()));
} else {
return this.read((MongoPersistentEntity)this.mappingContext.getRequiredPersistentEntity(typeToUse), target, path);
}
}
}
}
эта строка:
else if (DBObject.class.isAssignableFrom(rawType)) {
return bson;
}
, когда я пытаюсьпреобразовать ответ в DBObject, это возврат bson.class (Document.class), например:
List<DBObject> userList = mongoTemplate.findAll(DBObject.class, "user_info");
элементом userList является Document.class На самом деле, поэтому при выполнении этого кода:
DBObject obj = userList.get(1)
это проблема: "org.bson.Document не может быть приведен к com.mongodb.DBObject."
это правильно?почему я выполняю: mongoTemplate.findAll (DBObject.class, "user_info"), я возьму Document.class из List?не DBObject.class из List?