Я использую Anorm (2.5.1) в своем приложении Play + Scala (2.5.x, 2.11.11).Я часто сталкиваюсь с проблемой, когда значение аргумента класса case равно None, я не хочу, чтобы значение этого параметра вставлялось / обновлялось в БД SQL.Например:
case class EditableUser(
user_pk: String,
country: Option[String],
country_phone_code: Option[Int],
phonenumber: Option[String],
emailid: Option[String],
format_all: Option[String]
)
....
val eUser: EditableUser = EditableUser("PK0001", None, None, None, Some("xyz@email.com"), Some("yes"))
...
SQL"""
update #$USR SET
COUNTRY=${eUser.country},
COUNTRY_PHONE_CODE=${eUser.country_phone_code},
PHONENUMBER=${eUser.phonenumber},
EMAILID=${emailid},
FORMAT_ALL=${format_all}
where (lower(USER_PK)=lower(${eUser.user_pk}))
""".execute()
Здесь, когда значение равно None, Anorm вставит 'null' в соответствующий столбец в БД SQL.Вместо этого я хочу написать запрос таким образом, чтобы Anorm пропустил обновление тех значений, которые равны None, т.е. не перезаписывают.