Об исходном коде: org.bson.Document не может быть приведен к com.mongodb.DBObject - PullRequest
0 голосов
/ 25 июня 2018

У меня есть вопрос. Я использую версию 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?

...