我是scala和slick的新手。我必须编写一个更新语句来更新属性表中的值。
def updateValue(key: String, value: String) = Try(Tables.Properties.filter(_.key === key).map(j => j.value).update(Option(value)) ) match {
case success => println("Record sucessfully updated")
case failure => println("An error occurred")
}
上面的方法正在执行而没有任何错误,但是当我在表中检查时,它没有更新表中的任何值。我还有什么要补充的吗?
答案 0 :(得分:1)
我遇到了问题。我应该使用db.run()来更新。
def updateValue2(key: String, value: String) = {
val action = Tables.Properties.filter(_.key === key).map(j => j.value).update(Option(value))
db.run(action)
}
答案 1 :(得分:1)
您需要Success(x)
和Failure(x)
,而不是success
/ failure
。
在case
之后使用小写名称时所拥有的是填充了结果的变量,这意味着case success
将始终执行(即变量success
将发生的任何事情填充)case failure
永远不会执行。
括号中的变量将填充成功结果(即Success(a)
,a
保存结果)或抛出异常(即Failure(b)
,b
保留除外)。