2015-10-08 2 views
0

Обновление: решение найдено. Проблема была где-то еще в моем коде.Ebean - OrderBy с несколькими столбцами

Я использую Ebean с Play Framework, и я застрял с вопросом запроса как предложение OrderBy на двух столбцах. Первый столбец является varchar, а второй - datetime.

Проблема заключается в том, что я добавляю второй столбец в orderBy, я больше не могу сортировать на первом.

Я пробовал использовать способ запроса Ebean и путь RawSQL, но проблема все еще здесь.

Вот строки кода я пытался:

Ebean.createQuery(NavGav.class).where().in("account.itemState", Account.getActiveStates()).between("navGavDate", "2015-01-01 00:00:00", "2015-12-31 23:59:59").orderBy(orderBy + " " + sort + ", navGavDate").findPagingList(ITEM_BY_PAGE * 12); 

RawSql:

select columns 
from nav_gav t0 left outer join account t1 on t1.id = t0.account_id where t1.item_state in ('VALIDATED', 'PENDING_DEACTIVATION', 'UPDATED') 
order By t0.nav_frequency desc , t0.nav_gav_date 

Запрос работает на PhpMyAdmin, но не в приложении.

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

Спасибо.

+0

Обновление: была найдена проблема. Это было где-то еще в моем коде. Вышеуказанные коды работают нормально. –

ответ

1

Не пытайтесь объединить метод ordeyBy(column). попробуй это.

Ebean.createQuery(NavGav.class) 
       .where().in("account.itemState", Account.getActiveStates()) 
       .between("navGavDate", "2015-01-01 00:00:00", "2015-12-31 23:59:59") 
       .orderBy(orderBy + " " + sort) 
       .orderBy(navGavDate + " " + sort) 
       .findPagingList(ITEM_BY_PAGE * 12); 
+1

Параметр orderBy (...) дважды переопределяет первый порядокBy (...). – CodeReaper

Смежные вопросы