2

如何使用 JPA 标准对枚举进行排序。例如,要获得类似“ORDER BY CASE color WHEN 'YELLOW' THEN 1 WHEN 'RED' THEN 3 ELSE 2 END”这样的查询

4

3 回答 3

0

JPA Criteria API 中的 Case Expressions 可以解决这个问题。

CriteriaBuilder cb = entityManager.getCriteriaBuilder()

cb.selectCase(color)
.when(color.YELLOW, 1)
.when(color.YELLOW, 2)
.otherwise(3))
于 2012-06-14T10:56:31.737 回答
0

这应该可以,您只需要用 asc 或 desc 包装 case 表达式。

你试过什么代码,你得到什么错误?

见, http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Querying/Criteria#Order

于 2012-06-13T14:11:09.210 回答
0

这就是我在阅读 JPA 文档后处理它的方式:http ://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Querying/Criteria#Order 我没有深入了解它如何在内部处理,但我猜它是基于排序的在枚举序数上

 criteriaQuery.orderBy(criteriaBuilder.asc(Root.get("columnName")));
于 2021-11-01T14:43:12.363 回答