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). Итак, в интерфейсе Repo мне нужно что-то вроде:

List<ModelClass> findByXXXX(ModelClass criteria);

Цель состоит в том, чтобы запросить репо без необходимости записывать все возможные комбинации полей.


person Marco Ferrari    schedule 24.01.2014    source источник
comment
Что ж, в spring-data API этого нет. Самое близкое, что я могу придумать, - это findByField1AndField2...AndField10 и поместить поля, которые часто встречаются в ваших запросах и (или должны быть) проиндексированы в начале   -  person Ori Dar    schedule 25.01.2014


Ответы (1)


Для очень динамических запросов Spring Data JPA интегрируется с Querydsl. Он позволяет вам определять предикаты на лету и выполнять их как запросы MongoDB. справочная документация есть подробности об этом.

person Oliver Drotbohm    schedule 26.01.2014
comment
Спасибо за Ваш ответ. Принимаю! - person Marco Ferrari; 04.02.2014
comment
Ссылка на справочную документацию дает 404, я полагаю, соответствующая текущая ссылка, вероятно, docs.spring.io/spring-data/mongodb/docs/current/reference/html/ - person Olivier Gérardin; 17.07.2018