2016-09-20 41 views
0

我现在面临一个非常恼人的问题,用油滑3.0.x的:油滑更新可选字段

让我们考虑:

case class DbUser(id: Int, username: String, phoneNumber: Option[String], email: Option[String]) 

val user = DbUser(1, "User", None) 

如果我运行:

users.filter(_.id === user.id).update(user)

然后,即使我发送的数据是None,但是我可以理解,字段phonenumber将设置为null,但是,如果未定义此字段,如何不更新字段?任何想法>

+0

在光滑,无映射为空 –

+0

是的,我明白,但我怎么能告诉华而不实,以区分案件的电话号码是无,因为我想吨o将其从数据库中删除,其中phonnumber为None,因为我不想更改它 –

+0

请参阅下面的答案。我想你问的是如何构建一个更新,只更新特定的列 –

回答

0

只更新选择字段,请执行下列操作

只有更新的用户名:

users.filter(_.id === user.id) 
    .map(_.username) 
    .update(user.username) 
0

您可以_.phoneNumber.isDefined过滤,

import driver.api._ 

users.filter(_.phoneNumber.isDefined) 
    .map(_.phoneNumber) 
    .update(Some("3543453545"))