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