2010-01-13 45 views
3

天真尝试查询应该是这样的:在JPA/Hibernate中动态排序?

Query query = em.createQuery("from org.domain.Resource r where r._parent = ? order by ?"); 

这不起作用的参数应该是数据而不是列名或语法,如ASC或DESC。

你对这种动态排序有什么样的解决方法?将排序字符串连接到查询字符串是显而易见的,但有没有更好的?

+0

你建议你应该没问题。 http://forums.sun.com/thread.jspa?threadID=5321257 – Bozho 2010-01-13 11:32:40

回答

3

这是不幸的,它是如何必须与JPA完成的。 (但我可能是错的)。但是,我隐约记得在Hibernate上使用编号参数(?1,?2 ..)进行原生查询(em.createNativeQuery)的排序。无论如何,另一种解决方案(如果您使用JPA2或休眠)是使用criteria API