可选分页

问题描述 投票:1回答:1

我正在尝试通过可选的分页实现简单的数据库查询。我的尝试:

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)
}

问题是一个错误:

类型不匹配:找到:slick.lifted.Query必填:slick.lifted.TableQuery

如何使此代码可运行?也许更漂亮?


我目前从Query获得TableQuery的解决方法是添加.filter(_ => true),但是恕我直言,这不是很好:

val withLimit = limit.fold(MyTable.filter(_ => true))(l => MyTable.take(l))
scala slick
1个回答
2
投票

尝试替换

val MyTable = TableQuery[SomeTable]

with

val MyTable: Query[SomeTable, SomeTable#TableElementType, Seq] = TableQuery[SomeTable]

即以指定类型(从TableQuery静态广播到Query)。

© www.soinside.com 2019 - 2024. All rights reserved.