动态排序NamedQuery?缝/休眠/ JPA

时间:2010-11-23 14:25:23

标签: hibernate sorting jpa seam

我定义了几个NamedQuery,我希望能够动态地为实体的字段排序,而不必为我想要的每个字段创建唯一的NamedQuery排序。例如:

我有一个名为MyObject的实体,字段为'a','b'和'c'。我的基本查询是“SELECT DISTINCT o FROM MyObject o”,但我希望能够在查询中添加ORDER BY子句。理想情况下,我可以执行类似命名参数的操作,我的查询将如下所示:

SELECT DISTINCT o FROM MyObject o ORDER BY :order

然后我会指定要排序的字段(a,b,c)。有没有办法用Seam / Hibernate / JPA来实现这个目的?是否有更好的策略来解决这个问题?

2 个答案:

答案 0 :(得分:5)

无法在运行时更改命名查询。

// -----编辑部分

public void getOrders(String orderByElement){

    String query = "SELECT DISTINCT o FROM MyObject o ORDER BY " + orderByElement;

    entityManager.createQuery(query).getResultList();
}

具体是JPA。

答案 1 :(得分:3)

hibernate-named-query-order-by-partameter

中查看我的解决方案

基本思想是存储没有'order by子句的查询,并在运行时编辑它。