db 側の 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 が与えられたので、 User に ID を設定しなくても行を更新できますか?
Query(Users).filter(_.id == id).magic(Users.forInsert).update(User(None, "foo", "bar"))