天真的尝试查询将如下所示:
Query query = em.createQuery("from org.domain.Resource r where r._parent = ? order by ?");
这不起作用,因为参数应该是数据而不是列名或 ASC 或 DESC 等语法。
您为这种动态排序找到了什么样的解决方法?将排序字符串连接到查询字符串是显而易见的方法,但是还有更好的方法吗?
最佳答案
不幸的是,这就是必须使用 JPA 完成的方式。
但是,我确实模糊地记得在 Hibernate 上使用编号参数 (?1, ?2..) 进行 native 查询 (em.createNativeQuery) 排序(但我可能是错的)。无论如何,另一个解决方案(如果您使用的是 JPA2 或 Hibernate)是使用 criteria API
关于hibernate - JPA/Hibernate 中的动态排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2056021/