【问题标题】:Scala Slick updateScala Slick 更新
【发布时间】:2017-05-19 05:40:49
【问题描述】:

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

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

【问题讨论】:

标签: scala slick-3.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)
}

【讨论】:

    【解决方案2】:

    你想要Success(x) 和Failure(x),而不是success/failure。

    当您在case 之后使用小写名称时,您所拥有的是一个填充了结果的变量,这意味着case success 将始终执行(即无论发生什么情况,变量success 都会被填充)和@987654328 @ 永远不会执行。

    括号中的变量填充成功的结果(即Success(a)、a 持有结果)或抛出的异常(即Failure(b)、b 持有异常)。

    【讨论】:

    • 知道了。谢谢解释
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-21
    • 1970-01-01
    相关资源
    最近更新 更多