我知道我可以使用以下方法更新Slick 2.0中的两列:
val q = for (user <- Users if user.id === id) yield (user.name, user.city)
q.update((newName, newCity))
但我已经看到类似这样的东西,这是IMO更好的语法:
Users.filter(_.id === id).map(u => u.name ~ u.city).update(newName, newCity)
这给了我以下错误:
value ~ is not a member of shortcut.db.Tables.profile.simple.Column
我已导入PostgresDriver.simple._而我无法弄清楚原因。我也使用代码生成器。
提前致谢!
答案 0 :(得分:2)
这是因为Slick 2.0的~
方法为moved out of the normal import scope。你可以使用元组,就像那样:
Users.filter(_.id === id).map(u => (u.name, u.city)).update((newName, newCity))
或导入必要的TupleMethods对象:
import scala.slick.util.TupleMethods._
Users.filter(_.id === id).map(u => u.name ~ u.city).update((newName, newCity))
答案 1 :(得分:1)
除了肖恩·维埃拉的回答:
for (user <- Users if user.id === id) yield (user.name, user.city)
只是
的语法糖 Users.filter(_.id === id).map(u => (u.name, u.city))
并且它不是特定于Slick的,它是Scala编译器,它为Scala集合,Slick,以及其他任何东西都是荒谬的。