gpt4 book ai didi

java - Spring MongoRepository#findall : ConverterNotFoundException

转载 作者:行者123 更新时间:2023-12-02 12:15:42 27 4
gpt4 key购买 nike

我有两个简单的文档 MyDocNestedDoc

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;
}

// ...

}

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#findAll 时,我得到了

org.springframework.core.convert.ConverterNotFoundException: 
No converter found capable of converting from type [java.lang.String]
to type [com.xmpl.NestedDoc]

预期输出:

当我调用 MyMongoRepo#findByIdentifier (就像在 RestController 中一样)时,我得到类似的信息:

{
id: 123,
nested: {
identifier: "abc",
stp: "SOME_CONSTANT",
}
}

MyMongoRepo#findAll 应返回一个包含所有已知 MyDocs 的数组。

除了这个问题之外,了解为什么首先需要转换器也是很有趣的。需要转换字符串的幕后会发生什么?

最佳答案

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

{
id: 1,
nested: "somevalue"
}

并且 spring 无法将 String 转换为 NestedDoc 对象。

修复/删除该文档,你应该没问题。

关于java - Spring MongoRepository#findall : ConverterNotFoundException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46196562/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com