Spring数据通过"_class"值查找

Dar*_*hta 7 repository mongodb spring-data spring-data-mongodb

我们使用spring数据mongo存储库来存储/检索文档.以下是我们得到的类的Java结构:抽象类A - >具体类B和C我们使用save()方法编写文档.保存文档时,会保存存储classPath的"_class"变量.现在,当我们尝试查询数据时,我们将获得B和C类的文档.以下是示例:

public List<B> findByName (String name);
Run Code Online (Sandbox Code Playgroud)

当我们调用此方法时,列表(令人惊讶地)也包含C的对象.这可能是因为B和C有一个具有相同名称的属性.我的问题是,如果我们想将结果限制为特定的类,是否可以使用Mongo存储库?我们尝试使用findBy_Class,findByClass,但它抛出一个异常,说它无法在"B"中找到"class"成员.

返回类型(例如List < B >)是否有助于过滤对象?有任何想法吗?

提前致谢.

vin*_*ent 1

在查询对象上有一个“限制”方法,它仅返回给定类型的对象。 http://docs.spring.io/spring-data/mongodb/docs/current/api/index.html?org/springframework/data/mongodb/core/MongoOperations.html 我想你可以这样做:

query.restrict(B.class).findByName(...)
Run Code Online (Sandbox Code Playgroud)

  • 感谢你的回答。我使用的是 MongoRepository 而不是 Mongo 操作对象。因此,我将只在接口中定义方法,这些方法将转换为查询,如以下网址中所述:http://docs.spring.io/spring-data/data-document/docs/current/reference/html/ #repositories.query-methods.query-lookup-strategies。不知道这里有没有办法指定类。 (3认同)