def insert(u: User): Future[User] = {
val insertQuery = users returning users.map(_.id) into ((user, id) => user.copy(id = id))
val action = insertQuery += u
db.run(action)
}
case class User(id: Int, name: String, ..)
当我用这样的用户调用此方法时:
User(0, "john", ..)
我收到错误:
引起:org.postgresql.util.PSQLException:错误:重复键 值违反了唯一约束" users_pmkey"
似乎是试图将0作为PK插入。在我的DAO中,我将列设置为:
def id = column[Int]("id", O.PrimaryKey)
我基本上是想做两件事:
我做错了什么?
答案 0 :(得分:2)
如果你的ID是由postgresql生成的,你可以使用O.AutoInc
:
def id = column[Int]("id", O.PrimaryKey, O.AutoInc)
在您的案例类中,为id
字段使用选项:
case class User(id: Option[Int], name: String, ..)
并像这样创建新用户:
User(None, "john", ..)