使用“OR”的 Spring 查询示例

Rob*_*aga 5 java spring query-by-example spring-data-jpa

我有一个 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));
Run Code Online (Sandbox Code Playgroud)

那么SQL结果应该是(假设所有参数不为空):

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

是否可以?如果是的话,怎么会这样呢?我在 Google 上找不到任何代码示例,也找不到 ExampleMatcher 类中的建议方法名称。

Dan*_*fer 5

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

使用该方法ExampleMatcher.matchingAny()生成“或”运算而不是“与”运算。但这个操作适用于每个属性。