我有一个复杂的查询,我想使用 JPA Criteria Builder 为其构建查询
select i.*
from items i
where category = ?
order by
(price >= ?) desc,
(case when price >= ? then price end) asc,
price desc limit 1;
我对 Criteria Builder 不是很熟悉,但有基本的知识。
提前致谢。
最佳答案
遗憾的是,JPA 目前不支持 ORDER BY 子句中的 case 表达式。
如果你看一下 CriteriaQuery.orderBy 的参数, 参数必须是 Order
类型而不是 Expression
类型。
或者,您可以将其作为 native SQL 查询执行,然后通过 @SqlResultSetMapping
将结果映射到实体。
关于mysql - 如何在 MySQL 中为 case 语句编写 Criteria Builder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33231904/