2014-01-24 123 views
2

我有一个Spring Data MongoDB存储库,我想用一个定义为对象的搜索条件来查询。Spring Data MongoDB:按类实例查询

详情:

我有一个模型类:

@Document 
public class ModelClass { 

    @Id 
    private String id; 

    private String field1; 
    private String field2; 
    ... 
    private String field10; 

    // getters and setters 
} 

我也有一个MongoRepository存储这样的类的实例:

public interface Repo extends MongoRepository<ModelClass,String> {} 

我想使用查询库ModelClass的实例作为搜索条件。这些实例在所有字段中可能都没有值(某些字段可能会保留null)。因此,在回购界面中,我需要类似于:

List<ModelClass> findByXXXX(ModelClass criteria); 

目标是查询回购,而无需编写所有可能的字段组合。

+0

那么'spring-data' API没有它。我能想到的最接近的是'findByField1AndField2 ... AndField10'并且把你的查询中经常出现的字段(并且应该是)在开始时编入索引 –

回答

3

对于非常动态的查询,Spring Data JPA与Querydsl集成。它允许您即时定义谓词并将它们作为MongoDB查询执行。 reference documentation有详细说明。

+1

感谢您的回答。接受! –