要使用db side autoinc id,大多数事情建议使用不带id的自定义(forInsert)投影,现在我想使用相同的投影进行更新,但我无法弄清楚如何(或者如果可能)
class Users extends Table[User]("user") {
def id = column[UserId]("id", O.PrimaryKey, O.AutoInc)
def email = column[String]("email")
def password = column[String]("password")
def * = id.? ~ email ~ password <>(User, User.unapply _)
def forInsert = email ~ password <>( {
(email, password) => User(None, email, password)
}, {
u: User => Some((u.email, u.password))
})
def uniqueEmail = index("idx_email", email, unique = true)
}
这允许你做
Users.forInsert.insert(User(None, "foo", "bar"))
现在给了一个id,用户可以更新一行,而不必在User中设置id吗?
查询(用户).filter(_。id == id).magic(Users.forInsert).update(用户(无,“foo”,“bar”))
答案 0 :(得分:0)
您无法重复使用插入投影,但您可以轻松定义更新投影并执行。
Users.filter(_。id === id).map(p =&gt; p.email~p.password).update(email,password)