2011-05-07 72 views
1

有人可以幫我寫一個更好的代碼。我試過,但它不工作:更優雅的方式來寫一個休眠查詢

Query query = session.createQuery("from MyTable order by :sortvariable :sortorder"); 
query.setParameter("sortvariable", sortvar); 
query.setParameter("sortorder", order); 

這不是工作,以及

Query query = session.createQuery("from MyTable table order by table." + sortvar + " " + " :sortorder"); 
query.setParameter("sortorder", order); 

我managet得到它具有這方面的工作:

Query query = session.createQuery("from MyTable table order by table." + sortvar + " " + order); 

我需要做到這一點因爲我正在使用setMaxResults()和setFirstResult()。

回答

0

我不認爲你可以使用參數來識別關鍵字。是否有可能使用標準API來做你想做的事情?

boolean sortAscending = ...; 
Criteria criteria = session.createCriteria(MyTable.class); 
criteria.addOrder(sortAscending? Order.asc(sortVar): Order.desc(sortVar));