Scala Slick:如何查询与地图匹配的行';s键和该键';s值多少?

Scala Slick:如何查询与地图匹配的行';s键和该键';s值多少?,scala,slick,Scala,Slick,如果给定一个参数foo:Map[a,B],row.a.inSet(foo.keySet)和&row.B==foo(row.a),我需要一个与行匹配的查询。榜样 class UserTable extends Table[Foo] { id: Long first: String last: String } def getFoosMatchingMap(lastByFirst: Map[String, String]): Seq[Foo] = { rows.f

如果给定一个参数
foo:Map[a,B]
row.a.inSet(foo.keySet)和&row.B==foo(row.a)
,我需要一个与行匹配的查询。榜样

class UserTable extends Table[Foo] {
    id: Long
    first: String
    last: String
}


def getFoosMatchingMap(lastByFirst: Map[String, String]): Seq[Foo] = {
    rows.filter(r => r.first.inSet(lastByFirst.keySet) && r.last ==
lastByFirst(r.first)).list
}
因为
r.first
是一个
列[String]
,所以它不会编译。有没有一种简单的方法可以生成我没有看到的查询?

您可以试试

  def findBy(m: Map[String, String]) =
    TableQuery[UserTable].filter { row =>
      val criteria = m.map {
        case (column, value) =>
          row.column[String](column) === value
      }.reduceLeftOption(_ && _).get
    }.to[List]