我使用 Slick 对提升的实体进行更新。此代码更新 Contact 对象的 firstName:
def updateContact(id: Int, firstName: Option[String]): Unit = {
val q1 = for {
c <- Contacts
if c.id is id
} yield c.firstName
// Update value with same or new value
q1.update(firstName.getOrElse(q1.list().head))
}
此处的选项对于更新值已经很有用,以防它是 Some (尽管如果仅在有新值时才进行更新会更好)。
我正在寻找的是一种通过 ID 查询对象的方法,然后使用 getOrElse 在内存中进行所有更新,然后对整个对象进行更新。
否则,我必须为有效的对象的每个字段运行上述内容,但你知道,感觉就像一个肮脏的黑客。