【发布时间】:2019-09-02 14:09:57
【问题描述】:
我有以下网络服务,可自动将获取参数查询转换为数据库选择:
public interface PersonRepo extends
JpaRepository<Person, Long>,
QuerydslPredicateExecutor<Person> {
}
@GetMapping
public ResponseEntity getFiltered(
@QuerydslPredicate(root = Person.class) Predicate predicate, Pageable pageable) {
return ResponseEntity.ok(personRepo.findAll(predicate, pageable)));
)
}
例如可以执行以下查询:
GET /people?name=John&age=18
GET /people?name=John&age=18&page=1&sort=name,desc
问题:我想按如下方式应用比较器查询:
GET /people?name=John&age>18
GET /people?name=John&age>18&age<30
GET /people?name=John&age<30
问题:我怎样才能做到这一点?至少后面的查询不起作用。
【问题讨论】:
-
Spring Data 不支持此类查询。您可以自定义绑定(并使用别名,例如 agegt=18)baeldung.com/rest-api-search-querydsl-web-in-spring-data-jpa,但 OData (Olingo) 或 GraphQL 实现对于诸如此类的灵活查询可能会更好。
-
你能举个例子来说明使用例如
agegt吗?因为那将是我的Person.class上没有的属性,那么我怎样才能将它放入QPerson.class中呢?
标签: java spring spring-data-jpa spring-data-rest querydsl