我正在使用Spring Boot Spring Data编写应用程序。而且我正在尝试根据不同的过滤器参数实现过滤功能。
使用Spring Data查询,我们可以定义非常复杂的逻辑,例如:
@Query("SELECT u FROM User u WHERE u.status = 1")
Collection<User> findAllActiveUsers();
但是,如果不知道where子句的数量,顺序,限制,不同参数的数量,直到我们提出一个可能非常复杂的实际过滤器请求,该怎么办?
现在,过滤器参数将在我解析并检索它们的json对象中发送,结果sql查询可能是这样的:
SELECT * FROM table
WHERE field1 != `value1` and (field1 != ` value2 `OR (field1 = `value3` AND filed2 < 3))
AND field2 != 99
是否可以生成动态复杂的查询,其中包含不确定数量的参数,where子句和其他内容(直到运行时的实际过滤器请求)?
答案 0 :(得分:1)
我将此活动项目RSQL用于JPA
答案 1 :(得分:0)
有时候我在Spring Data JPA Query with Dynamic Where Clause上写过一篇文章。在此示例中,您可以发送该参数的Where子句和Map。您可以利用它,并对其进行一些修改以适应您的需求。
答案 2 :(得分:0)
我建议使用Spring JPA规范 ref:https://spring.io/blog/2011/04/26/advanced-spring-data-jpa-specifications-and-querydsl/
答案 3 :(得分:0)
要以类型安全的方式构建它,可以使用FluentJPA。