Ebean - 包含多列的OrderBy

时间:2015-10-08 10:31:21

标签: mysql sql playframework ebean

更新:找到解决方案。问题出现在我的代码中的其他地方。

我在Play Framework中使用Ebean,我在两列上遇到了一个查询女巫作为orderBy子句。第一列是varchar,第二列是日期时间。

问题是当我在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,但不适用于应用程序。

你能告诉我我做错了什么吗?

感谢。

1 个答案:

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