2010-11-23 30 views
7

我有幾個NamedQuery的定義,我希望能夠動態地爲實體排序字段,而不必爲每個我想排序的字段創建唯一的NamedQuery。例如:對NamedQuery進行動態排序? Seam/Hibernate/JPA

我有一個名爲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來完成這個任務嗎?解決這個問題有更好的策略嗎?

+1

此問題與[Hibernate命名參數查詢順序](http://stackoverflow.com/questions/4120388/hibernate-named-query-order-bypartner)有關。也許相應的答案可以幫助你。 – kraftan 2010-11-23 21:58:53

回答

5

命名查詢在運行時無法更改。

// -----編輯部分

public void getOrders(String orderByElement){ 

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

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

其JPA具體。

+0

這正是我正在尋找的。但是,如果我將它指定爲JPA @NamedQuery,您提供的查詢會工作嗎?或者它只會在用entityManager.createQuery創建時才起作用?我想不出爲什麼它不會,但只是想確定。 – Shadowman 2010-11-23 19:43:24

相關問題