在Slick和Scala中使用带参数的过滤器功能?

时间:2018-07-05 18:57:50

标签: scala slick currying

如何定义currying参数(???)可以在以下函数中更改过滤器:

def readManRleIspBy(value:String)(???) = {
  val query= tblManRleIsp.filter(??? === value)
  db.run(query.result)
}

我需要在另一边定义(???)。例如 readManRleIspBy("test")(f=>f.rlePattern) 要么 readManRleIspBy("test")(f=>f.rleName)

1 个答案:

答案 0 :(得分:1)

为此,您必须使用光滑的Rep。在下面的代码TableRow中,您是使用slick在数据库中保留的类的名称。

例如,如果我要保留员工,则我写了员工表,而我的TableRow变成了Employee

def readManRleIspBy[A](value: A)(f: Rep[TableRow] => Rep[A]) = {
  val query= tblManRleIsp.filter(row => f(row) === value)
  db.run(query.result)
}

现在您可以写

readManRleIspBy("test")(f => f.rlePattern)

还有

readManRleIspBy("test")(f => f.rleName)

免费建议:请尝试使用更好的名称