【发布时间】:2018-07-16 12:42:07
【问题描述】:
我是 Java 新手,从 Spring Boot 和 Spring Data JPA 开始,所以我知道两种获取数据的方法:
- by
Repository层,字面量方法命名:FindOneByCity(String city); - 通过自定义 repo,带有 @Query 注释:@Query('select * from table where city like ?');
两种方式都是静态设计的。
我应该如何获取必须在运行时构建的查询数据?
我想要实现的是无需接触代码即可创建动态报告的可能性。一个表将包含具有名称的报告记录和具有默认参数(如 begin_date、end_date 等)的 SQl 查询,但具有各种主体。示例:
"Sales report by payment method" | select * from sales where met_pay = %pay_method% and date is between %begin_date% and %end_date%;
【问题讨论】:
-
您能详细说明您想要达到的目标吗?我有点困惑为什么不推荐使用 QueryDsl。愿意发布对此的参考吗?
-
您的第一点不正确。文字方法命名在存储库层而不是自定义存储库。根据您的要求,您可以创建自定义存储库层并使用 EntityManger 并构建动态查询
-
@mp911de 它在 Spring 文档中说它已弃用,所以我的老板小心不要使用它:docs.spring.io/spring-data/jdbc/docs/current/reference/html/…
-
@PSyLoCKe,QueryDSL 支持已被弃用,仅适用于 Spring JDBC 扩展,不适用于 Spring Data JPA。
标签: java spring-boot spring-data-jpa