Более элегантный способ написать запрос гибернации - PullRequest
1 голос
/ 07 мая 2011

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

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

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

1 Ответ

0 голосов
/ 07 мая 2011

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

boolean sortAscending = ...;
Criteria criteria = session.createCriteria(MyTable.class);
criteria.addOrder(sortAscending? Order.asc(sortVar): Order.desc(sortVar));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...