我试图插入如果不存在,并获取行,如果它存在。 我想出了这个:
def saveOrGet(u: User) = (for {
userGet <- get(u.name).map(r => (r.id, r.active)).result.headOption
id <- save(u) if userGet.isEmpty
} yield {
userGet match {
case Some((id, active)) => (User(Some(id), u.name, active), false)
case None => (User(Some(id), u.name, u.active), true)
}
}).transactionally
private def get(name: String) = users.filter(_.name === name).take(1)
private def save(u: User) = users returning users.map(_.id) += u
修改
经过一些修改,现在我得到了:
java.util.NoSuchElementException: Action.withFilter failed
此致
答案 0 :(得分:0)
尝试使用case _
,因为似乎可能有空的而不是None
userGet match {
case Some((id, active)) => (User(Some(id), u.name, active), false)
case _ => (User(Some(id), u.name, u.active), true)
}