【发布时间】:2019-05-20 16:54:37
【问题描述】:
我正在创建自定义 JPQL 查询来获取一些数据。 在某些情况下,我想根据参数值是否为非空来添加 where 子句。
例如等价的sql查询:
//If parameter status is not null.
SELECT sum(A.sal) FROM TABLE A WHERE A.STATUS = 'X' GROUP BY A.CURRENCY;
//else
SELECT sum(A.sal) FROM TABLE A GROUP BY A.CURRENCY;
谁能帮帮我。
【问题讨论】:
-
查看 querydsl 支持或规范。
-
你的例子中是 JPQL 吗?它看起来更像是一个普通的 SQL 查询(尽管这个
table关键字对我来说似乎是错误的。如果参数的这种可空性是唯一的 if-else 情况,那么您可以将它包装在一个查询中,而无需做任何事情“动态” -
为简单起见,我只指定了两个,一般会更多,也是的,这些都是 SQL 形式,实际上我是使用构造函数将结果集映射到非实体 pojo。
标签: mysql spring-boot spring-data-jpa spring-data