java - 如何使用 findByClassLiteral 查询构建自定义 MongoRepository

标签 java spring-data spring-data-mongodb

我正在尝试构建一个 MongoRepository,它允许根据类成员查找文档。

这是我的缩写数据对象:

public class Example<T extends SomeType> {

  private String id;

  private Class<T> dataClass;

}

这是我的存储库:

public interface ExampleRepository extends MongoRepository<Example<? extends SomeType>, String> {

  <T extends SomeType> Example<T> findByDataClass(Class<T> dataClass);
}

以下是我如何保存 Example 实例的示例:

@Autowired
private ExampleRepository examples;

void someMethod() {
 examples.save(new Example<>(null, SomeConcreteType.class));
}

当我尝试启动我的应用程序时,出现异常:

org.bson.codecs.configuration.CodecConfigurationException: Can't find a codec for class java.lang.Class.

我不知道这是否相关,但我正在使用 Fongo 在本地构建内存数据库。

我该如何解决这个问题?

最佳答案

这是不可能实现的。如果您尝试保存,您将收到相同的错误消息。

Can't find a codec for class java.lang.Class

这是因为,Mongo 不知道这种数据类型。查看此链接以了解 Mongo 支持的数据类型。 http://mongodb.github.io/mongo-java-driver/3.0/bson/documents/

关于java - 如何使用 findByClassLiteral 查询构建自定义 MongoRepository,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50872810/

相关文章:

java - JAXB 将命名空间添加到父元素而不是包含的子元素

Java int - 颜色只有蓝色?

java - Spring data rest - 是否有一个全局开关来阻止所有删除操作?

java - 在 JAVA Spring 框架中使用存储库时如何正确使用 MongoDB 进行身份验证

java - JDeveloper 错误 - Ear 文件构建

java - 为什么我必须创建 int 数组而不是直接传递一个作为参数?

java - 无法使用 Spring @Cacheable 和 @EnableCaching

java - 将链接添加到投影的嵌套对象中

mongodb - 使用 Spring Data Mongodb,是否可以在不拉取和迭代整个集合的情况下获得字段的最大值?

mongodb - 如何自定义 MongoRepository 而不覆盖接口(interface)中带注释的 @Query 方法?