Как игнорировать нулевые или пустые значения при использовании find () в Spring MongoRepository

У меня есть функция поиска, в которой есть разные параметры, и пользователь может выбрать один или несколько параметров и игнорировать другие параметры. Я хочу использовать для этого findByFirstNameAndLastNameAndAddressAndCountry(), чтобы, если какой-либо параметр имеет значение NULL или пустой, его можно было игнорировать, а условие And применялось к другим параметрам.


person Chandan Kumar    schedule 09.05.2019    source источник
comment
Дубликат stackoverflow.com/questions/11613464/   -  person Jens Schauder    schedule 12.05.2021


Ответы (2)


Это может быть повторяющаяся проблема. Вы можете сделать это, используя аннотацию @Query и свой собственный запрос.

Ссылка: Как пропустить @Param в @Query, если значение null или пусто в Spring Data JPA

@Query("select foo from Foo foo where foo.bar = :bar and "
   + "(:goo is null or foo.goo = :goo)")
public List<Foo> findByBarAndOptionalGoo(
     @Param("bar") Bar bar, 
     @Param("goo") Optional<Goo> goo);
person Senthil    schedule 09.05.2019

Используйте опции «Запрос» и «Критерии», предоставляемые Spring для MongoDB.

Query query = new Query();

if(!obj.getFirstName.isEmpty()){
    Criteria criteria1 = Criteria.where('first_name').is(obj.getFirstName);
    query.add(criteria1);
}
person Chandan Kumar    schedule 07.05.2020