如何在MySQL中为case语句编写Criteria Builder

时间:2015-10-20 08:41:10

标签: mysql jpa criteria

我有这个复杂的Query,我想使用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不熟悉,但具备基本知识。

提前致谢。

1 个答案:

答案 0 :(得分:0)

不幸的是,JPA目前不支持ORDER BY子句中的case表达式。

如果您查看CriteriaQuery.orderBy的参数,则参数必须为Order类型,而不是Expression类型。

或者,您可以将其作为本机SQL查询执行,然后通过@SqlResultSetMapping将结果映射到实体。