sel*_*fsx 1 postgresql pagination scala slick
我正在尝试使用Slick与Postgres进行简单的分页,但它不能按预期工作.
// Table
// "users_pkey" PRIMARY KEY, btree (id)
// "users_id_idx" btree (id)
val id: Column[Option[Long]] = column("id", O.PrimaryKey, O.AutoInc, O.DBType(BigSerial))
// Pagination queries
users.drop(0).take(20).sortBy(_.id.desc).list
users.drop(20).take(20).sortBy(_.id.desc).list
Run Code Online (Sandbox Code Playgroud)
但结果未按预期排序.id在内页订购的用户,例如第一页将是40, 35, 34 ... 4, 2第二页39, 38, 36, ... 3, 1.
问题是您在获取值后进行排序.如果在初始顺序39中处于第21位并且您对前20个值进行排序,则无法将其排序到正确的位置,因为在没有它的情况下进行排序.
如果您想要正确的订购,您应该在获取块之前对用户进行排序,例如:
val sortedUsers = users.sortBy(_.id.desc)
sortedUsers.drop(0).take(20).list
sortedUsers.drop(20).take(20).list
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1158 次 |
| 最近记录: |