"Computers"サンプルのようなリストページを作成しようとしています。私の環境では、私は私のユーザーオブジェクトの以下のメソッドを持っている2.0とPostrgreSQL 9.0PostgreSQL 9.0で異常終了しました。
を再生する次のとおりです。
def list(page: Int = 0, pageSize: Int = 10, orderBy: Int = 1, filter: String = "%"): Page[User] = {
val offset = pageSize * page
val mode = if (orderBy > 0) "ASC NULLS FIRST" else "DESC NULLS LAST"
Logger.debug("Users.list with params: page[%d] pageSize[%d] orderBy[%d] filter[%s] order[%s]".format(page, pageSize, orderBy, filter, mode))
DB.withConnection {
implicit connection =>
val users = SQL(
"""
select * from publisher
where name ilike {filter}
order by {orderBy} %s
limit {pageSize} offset {offset}
""".format(mode)
).on(
'pageSize -> pageSize,
'offset -> offset,
'filter -> filter,
'orderBy -> scala.math.abs(orderBy)
).as(User.simple *)
val totalRows = SQL(
"""
select count(*) from publisher
where name like {filter}
"""
).on(
'filter -> filter
).as(scalar[Long].single)
Page(users, page, offset, totalRows)
}
}
は私が提供している「ORDERBY」の値は関係ありません、順序は常にのIDに基づいていますエンティティ。
Anormによって生成されたクエリは有効なPostgreSQLであり、データベースに対して直接実行するとうまく動作します。しかし、Anormパーサが結果が返される順序を無視していて、代わりに 'id'でリストされたリストを返すように思えます。
私はさらに"select * from publisher order by 2 ASC/DESC"
へのクエリを単純化しようとしましたが、何も修正されていません。返された順番は無視されます。
この問題を解決する方法についてのご意見はありますか?