Более элегантный способ написания запроса в режиме гибернации

#java #hibernate

#java #переход в режим гибернации

Вопрос:

Может кто-нибудь помочь мне написать лучший код. Я пробовал это, но это не работает :

 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);
  

Мне удается заставить его работать с этим :

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

Мне нужно сделать это с помощью query, потому что я использую setMaxResults() и setFirstResult().

Ответ №1:

Я не думаю, что вы можете использовать параметры для определения ключевых слов таким образом. Возможно ли сделать то, что вы пытаетесь сделать, используя criterions API?

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