Spring Query на примере с использованием ИЛИ

У меня есть объект JPA, который имеет два атрибута для поиска с помощью оператора «ИЛИ» вместо «И». Это LedgerCode и Division:

Company comp = new Company();
ExampleMatcher matcher =
    ExampleMatcher.matching().withStringMatcher(StringMatcher.CONTAINING)
        .withIgnoreCase("name");

comp.setCountryCode(countryCode);
comp.setLedgerCode(ledgerCode);
comp.setDivision(division);
comp.setName(name);

List<Company> result = compSearchRepository.findAll(Example.of(comp, matcher));

Тогда результат SQL должен быть (при условии, что все параметры не нулевые):

SELECT d 
  FROM COMPANY d 
 WHERE d.countryCode = country 
    OR d.ledgerCode = ledger 
    OR d.division = division 
   AND lower(d.name) LIKE '%name%'

Является ли это возможным? Если да, то как? Я не смог найти ни одного примера кода в Google, ни подходящего имени метода в классе ExampleMatcher.


person Robson Braga    schedule 03.03.2017    source источник
comment
Возможный дубликат как это сделать И и метод нескольких параметров ИЛИ в весенних данных JPA   -  person James Jithin    schedule 03.03.2017


Ответы (1)


Вы не можете комбинировать поиск по ИЛИ и И с запросом по примеру.

В методе ExampleMatcher.matchingAny() вместо операции И генерируется операция ИЛИ. Но эта операция используется для каждого атрибута.

person Daniel Käfer    schedule 25.07.2017