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]