java - Spring Query By Example 使用 "OR"

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

我有一个 JPA 实体,它有两个属性可以通过“OR”运算符而不是“AND”进行搜索。这些是 ledgerCode 和部门:

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 类中的提示性方法名称。

最佳答案

您不能将 OR 和 AND 搜索与 Query By Example 结合使用。
用方法ExampleMatcher.matchingAny()生成 OR 运算而不是 AND 运算。但是此操作用于每个属性。

关于java - Spring Query By Example 使用 "OR",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42584191/

相关文章:

spring - JAX-WS 的注释端点位置

java - 在 Spring 中配置 Hibernate 模型发现

java - 通配符转义 JPA 规范

java - 如何使用 spring data jpa 仅更新模型中的传入字段?

java - 基于maven配置文件的 cucumber 标签

java - 更新 JFrame

java - 我们必须关闭 session 对象吗?

spring - Spring 和 Velocity 的 i18n(国际化)问题

java - Logback 1.3.5 忽略 InternetItem 的 ElasticsearchAppender 属性

java - 如何使用 Spring Data JPA 查询更新 PostgreSQL 中的 JSONB 列