我定义了几个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来实现这个目的?是否有更好的策略来解决这个问题?
答案 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子句的查询,并在运行时编辑它。