更新:找到解决方案。问题出现在我的代码中的其他地方。
我在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,但不适用于应用程序。
你能告诉我我做错了什么吗?
感谢。
答案 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);