Spring使用“OR”按示例查询

时间:2017-03-03 16:41:01

标签: java spring spring-data-jpa query-by-example

我有一个JPA实体,它有两个属性可以通过“OR”运算符而不是“AND”进行搜索。这些是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类中找到提示方法名称。

1 个答案:

答案 0 :(得分:1)

您不能将OR和AND搜索与“按示例查询”组合。

使用方法ExampleMatcher.matchingAny()生成OR运算的OR运算。但是此操作用于每个属性。