Scala 如何编译带有2个参数的查询
现在确定如何正确执行此操作,我正在尝试执行以下操作:Scala 如何编译带有2个参数的查询,scala,slick,currying,Scala,Slick,Currying,现在确定如何正确执行此操作,我正在尝试执行以下操作: def byId(id: Column[Int], locationId: Column[Int]) = { for { m <- users if m.id === id && m.locationId == locationId } yield m } val byIdCompiled = Compiled(byId _) // ???????????? how to pass second pa
def byId(id: Column[Int], locationId: Column[Int]) = {
for {
m <- users if m.id === id && m.locationId == locationId
} yield m
}
val byIdCompiled = Compiled(byId _) // ???????????? how to pass second parameter?
def getById(id: Int, locationId: Int): Option[User] {
byIdCompiled(id, locationId).firstOption
}
def byId(id:Column[Int],locationId:Column[Int])={
为了{
mSlick docs中提供的示例使用单下划线对多个参数进行编码
def userNameByIDRange(最小:列[Int],最大:列[Int])=
为了{
u=最小值和u.id<最大值
}美国第一
val userNameByIDRangeCompiled=Compiled(userNameByIDRange)
//查询将只编译一次:
val names1=userNameByIDRangeCompiled(2,5)。运行
val names2=userNameByIDRangeCompiled(1,3)。运行
您尝试过这个吗?(如果是,您会遇到什么错误?)我之所以问这个问题,是因为它应该已经可以正常工作了。我会再试一次,我想我是在做编译(byId)\uuu)在此之前,我尝试过。您使用u的方式意味着整个参数列表,而不仅仅是一个参数。通过byIdCompiled的参数,我得到了错误“application not take parameters”。
def userNameByIDRange(min: Column[Int], max: Column[Int]) =
for {
u <- users if u.id >= min && u.id < max
} yield u.first
val userNameByIDRangeCompiled = Compiled(userNameByIDRange _)
// The query will be compiled only once:
val names1 = userNameByIDRangeCompiled(2, 5).run
val names2 = userNameByIDRangeCompiled(1, 3).run