Scala Slick.错误的分页\ w Postgres

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.

Gar*_*tty 7

问题是您获取值进行排序.如果在初始顺序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)