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 を使用してメモリ内のすべての更新を行い、オブジェクト全体を更新する方法です。
それ以外の場合は、オブジェクトの各フィールドに対して上記を実行する必要がありますが、これは汚いハックのように感じます。