【发布时间】:2021-12-03 13:16:32
【问题描述】:
保持简单,我想构建一个查询以使其等效于:
select * from user where (name like ? or detail like ?) and age = ?
到目前为止我所尝试的:
Page<Post> findByNameOrDetailContainingAndAgeEquals(String query, int age, Pageable pageable);
Page<Post> findByNameContainingOrDetailContainingAndAgeEquals(String query, String query, int age, Pageable pageable);
所有这些方法都失败了。看来Spring拆分查询非常错误。
我已经检查了https://github.com/spring-projects/spring-data-jpa/blob/main/src/test/java/org/springframework/data/jpa/repository/sample/UserRepository.java 中的所有示例 但所有这些示例都非常简单(大多数查询即使只有一个简单条件)。
我已阅读此答案How to combine multiple And and Or through method name 并同意。但是,如您所见,我认为我的情况并不像 OP 那样复杂。只需将“AND”和“OR”查询条件结合起来,这在 SQL 方式中很容易,但我只想通过 JPA 方式来实现。
【问题讨论】:
标签: java spring jpa spring-data-jpa spring-data