可选分页
Optional pagination
我正在尝试使用可选分页实现简单的数据库查询。我的尝试:
def getEntities(limit: Option[Int], offset: Option[Int]) = {
// MyTable is a slick definition of the db table
val withLimit = limit.fold(MyTable)(l => MyTable.take(l)) // Error here.
// Mytable and MyTable.take(l)
// has various types
val withOffset = offset.fold(withLimit)(o => withLimit.drop(o))
val query = withOffset.result
db.run(query)
}
问题是一个错误:
type mismatch:
found: slick.lifted.Query
required: slick.lifted.TableQuery
如何让这段代码可以运行?也许更漂亮一点?
我目前从 TableQuery
获取 Query
的方法是添加 .filter(_ => true)
,但恕我直言,这不太好:
val withLimit = limit.fold(MyTable.filter(_ => true))(l => MyTable.take(l))
尝试替换
val MyTable = TableQuery[SomeTable]
与
val MyTable: Query[SomeTable, SomeTable#TableElementType, Seq] = TableQuery[SomeTable]
即指定类型(静态向上转换 TableQuery
到 Query
)。
我正在尝试使用可选分页实现简单的数据库查询。我的尝试:
def getEntities(limit: Option[Int], offset: Option[Int]) = {
// MyTable is a slick definition of the db table
val withLimit = limit.fold(MyTable)(l => MyTable.take(l)) // Error here.
// Mytable and MyTable.take(l)
// has various types
val withOffset = offset.fold(withLimit)(o => withLimit.drop(o))
val query = withOffset.result
db.run(query)
}
问题是一个错误:
type mismatch:
found: slick.lifted.Query
required: slick.lifted.TableQuery
如何让这段代码可以运行?也许更漂亮一点?
我目前从 TableQuery
获取 Query
的方法是添加 .filter(_ => true)
,但恕我直言,这不太好:
val withLimit = limit.fold(MyTable.filter(_ => true))(l => MyTable.take(l))
尝试替换
val MyTable = TableQuery[SomeTable]
与
val MyTable: Query[SomeTable, SomeTable#TableElementType, Seq] = TableQuery[SomeTable]
即指定类型(静态向上转换 TableQuery
到 Query
)。