我正在创建自定义 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;
有人可以帮我吗?
最佳答案
两个查询:
//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;
可以压缩为一。
首先让我们声明一个命名参数statusParam
。此参数可以采用任何值(例如上面的 'X'
或 null
)。因此上面的两个查询可以重写为:
SELECT sum(A.sal) FROM A WHERE (A.STATUS = :statusParam OR :statusParam is null ) GROUP BY A.CURRENCY;
关于mysql - Spring Data JPQL 如何使用动态where子句创建查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53864092/