Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring MongoRepository#findall:ConverterNotFoundException_Java_Spring_Mongodb_Spring Data_Spring Mongodb - Fatal编程技术网

Java Spring MongoRepository#findall:ConverterNotFoundException

Java Spring MongoRepository#findall:ConverterNotFoundException,java,spring,mongodb,spring-data,spring-mongodb,Java,Spring,Mongodb,Spring Data,Spring Mongodb,我有两个简单的文档MyDoc和NestedDoc MyDoc: public class MyDoc { @Id private final String id; private final NestedDoc nested; public MyDoc (MyIdentifier myIdentifier, Nested nested) { this(myIdentifier.toString(), new

我有两个简单的文档
MyDoc
NestedDoc

MyDoc

public class MyDoc {

    @Id
    private final String id;
    private final NestedDoc nested;


    public MyDoc (MyIdentifier myIdentifier, Nested nested) {

        this(myIdentifier.toString(), 
                new NestedDoc(nested.getIdentifier(), nested.getStp()));

    }

    @PersistenceConstructor
    public MyDoc (String id, NestedDoc nestedDoc) {
        this.id = id;
        this.nestedDoc = nestedDoc;
    }

    // ...

}
public class NestedDoc {

    private final String identifier;
    private final Stp stp; // is an enum    

    @PersistenceConstructor
    public NestedDocDoc (String identifier, Stp stp) {
        this.identifier = identifier;
        this.stp = type;
    }

    // ...

}
NestedDoc

public class MyDoc {

    @Id
    private final String id;
    private final NestedDoc nested;


    public MyDoc (MyIdentifier myIdentifier, Nested nested) {

        this(myIdentifier.toString(), 
                new NestedDoc(nested.getIdentifier(), nested.getStp()));

    }

    @PersistenceConstructor
    public MyDoc (String id, NestedDoc nestedDoc) {
        this.id = id;
        this.nestedDoc = nestedDoc;
    }

    // ...

}
public class NestedDoc {

    private final String identifier;
    private final Stp stp; // is an enum    

    @PersistenceConstructor
    public NestedDocDoc (String identifier, Stp stp) {
        this.identifier = identifier;
        this.stp = type;
    }

    // ...

}
有一个直接的存储库:

public interface MyMongoRepo extends MongoRepository<MyDoc, String> {
    default MyDoc findByIdentifier (MyIdentifier identifier) {
        return findOne(identifier.toString());
    }
}
预期产出:

当我调用
MyMongoRepo#findbyidentier
(就像在RestController中一样)时,我得到如下结果:

{
    id: 123,
    nested: {
        identifier: "abc",
        stp: "SOME_CONSTANT",
    }
}
MyMongoRepo#findAll
应该返回一个包含所有已知MyDocs的数组


除了这个问题之外,了解为什么首先需要转换器也很有趣。需要转换字符串的引擎盖下会发生什么情况?

数据库中的mongo文档如下所示

{
    id: 1,
    nested: "somevalue"
}
spring无法将
String
转换为
NestedDoc
对象


修复/删除该文档,您应该会没事。

为什么我没想到?!太明显了!哈哈,谢谢你。在我的应用程序中,我有多个存储库,在启动时,我通常会删除所有集合。忘了那笔回购交易的那一行。因此,我有早期
嵌套的
版本的过时文档,它们是简单的字符串。。。天啊,我现在恨我自己!