0
我有一个有多列的光滑表,我想根据用户输入更新一些列。我的表看起来像这样:更新斯卡拉有可选列的有光泽的行
class Users(_tableTag: Tag) extends Table[User](_tableTag, "users") {
def * = (id, name, email, phone, passwordHash, createdAt) <> (User.tupled, User.unapply)
val id: Rep[Long] = column[Long]("id", O.AutoInc, O.PrimaryKey)
val name: Rep[String] = column[String]("name")
val email: Rep[String] = column[String]("email")
val phone: Rep[String] = column[String]("phone")
val passwordHash: Rep[String] = column[String]("password_hash")
val createdAt: Rep[java.sql.Timestamp] = column[java.sql.Timestamp]
("created_at", SqlType("TIMESTAMP NOT NULL DEFAULT current_timestamp"))
}
的User
例类看起来是这样的:
case class User(
id: Long,
name: String,
email: String,
phone: String,
passwordHash: String,
createdAt: Timestamp)
我使用的Play光滑,所以我想我会建立一个更新案例类基于用户提供可选的JSON领域是这样的:
case class UserUpdate(
id: Long,
name: Option[String],
email: Option[String],
phone: Option[String],
passwordHash: Option[String])
我怎样才能让一个漂亮的3.1查询更新在这个更新对象是Some(value)
类型的字段?
你可以取老'oldUser:User'记录,并做'UserUpdate.field.getOrElse(oldUser .field)' –
@ insan -e是的,这将工作,但需要2个查询(选择,然后更新)。我想在一个更新查询中完成它。 –