Scala Slick更新

时间:2017-05-18 20:59:44

标签: scala slick-3.0

我是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")
}

上面的方法正在执行而没有任何错误,但是当我在表中检查时,它没有更新表中的任何值。我还有什么要补充的吗?

2 个答案:

答案 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保留除外)。