JPA 2.0引入了一个新
TYPE表达式,该表达式允许查询根据类类型限制结果。
您可以使用通过Criteria API使用类型表达式
Path#type()。因此,您可以 尝试 :
CriteriaQuery criteriaQuery = builder.createQuery(Hobby.class);Root hobbyRoot = criteriaQuery.from(Hobby.class);criteriaQuery.orderBy(builder.asc( **hobbyRoot.type()** );List hobbies = entityManager.createQuery(criteriaQuery).getResultList();
虽然此代码可以编译,但我没有对其进行测试(明天尝试)。
实际上,我想知道这是否合法,或者是否
type()应该将select作为选择的一部分
orderby(也许这就是标准查询应该生成的内容)。需要检查一下。
参考文献
- JPA 2.0规范
- 第4.6.17.4节“实体类型表达式”
更多资源
- Java Persistence 2.0建议的最终草案



