【发布时间】:2020-01-30 20:35:32
【问题描述】:
我正在使用 Spring Boot、Spring Data 编写应用程序。我正在尝试根据不同的过滤器参数实现过滤功能。
我发现 Spring Data REST framework 开箱即用支持基本过滤操作,例如:
/myEntities?field1=value1&field2=value2&sort=field2,desc&size=10&page=2
在这种情况下,我们只过滤 2 个字段,没有任何额外的 where 子句。
但是,如果我需要一个更复杂的过滤器,它对我的实体具有不同数量的 where 子句、顺序、限制,该怎么办?结果查询可能如下所示:
SELECT * FROM table
WHERE field1 != `value1` and (field1 != ` value2 `OR (field1 = `value3` AND filed2 < 3))
AND field2 != 99
是否可以使用 Spring Data Rest 的内置功能来实现不同 where 子句的组合(将所有这些东西作为 http 参数发送)?
【问题讨论】:
-
我不确定是否有可能用像现在这样简单的东西来实现你想要实现的目标。但是您可以尝试使用 Pageable 的规范。 this 可能会有所帮助
-
没有。您将不得不推出自己的解决方案,或者可能调查 OData 实现是否可以处理此问题,例如Olingo baeldung.com/olingo 和 docs.oasis-open.org/odata/odata/v4.01/csprd05/…
标签: java spring hibernate spring-data-jpa spring-data-rest