2011-05-07 71 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));