【发布时间】:2019-10-01 11:55:42
【问题描述】:
我正在使用 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 子句和其他内容的动态复杂查询?
【问题讨论】:
标签: java spring hibernate spring-boot spring-data-jpa