有没有一种方法可以动态生成Spring Data Jpa查询?

时间:2019-10-01 11:55:42

标签: java spring hibernate spring-boot spring-data-jpa

我正在使用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子句和其他内容(直到运行时的实际过滤器请求)?

4 个答案:

答案 0 :(得分:1)

我将此活动项目RSQL用于JPA

https://github.com/perplexhub/rsql-jpa-specification

答案 1 :(得分:0)

有时候我在Spring Data JPA Query with Dynamic Where Clause上写过一篇文章。在此示例中,您可以发送该参数的Where子句和Map。您可以利用它,并对其进行一些修改以适应您的需求。

答案 2 :(得分:0)

答案 3 :(得分:0)

要以类型安全的方式构建它,可以使用FluentJPA