我有持久性实体Cats(id,name)。我想查询所有猫(使用HQL / JPQL),名为'Tom'的猫在顶部,即按自定义表达式名称='Tom'排序。
在Oracle中,我可以使用
ORDER BY CASE name WHEN 'Tom' THEN 0 ELSE 1 END.
如何在Hibernate中做什么?
答案 0 :(得分:6)
我刚刚编写了一个测试类,以下内容适用于Hibernate / JPA 3.6.1:
SELECT o
FROM Cat o
ORDER BY CASE o.name WHEN 'Tom' THEN 0 ELSE 1 END
答案 1 :(得分:0)
在普通的JPQL / HQL中无法进行相同的查询,但有两种方法可以获得相同的结果
1)编写本机查询并将其映射到实体Cat。
2)创建一个视图并将实体Cat子类化为映射到视图。
我非常清楚,没有一种解决方案是理想的,但除了本机查询之外,Hibernate和JPA都没有针对此场景的功能。我认为您应该考虑这三种解决方案中最好的解决方案,因为这会影响您的集成测试。