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

时间:2018-06-15 09:33:37

标签: 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在本地构建一个内存数据库。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

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

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

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