【问题标题】:playframework scala slick how to update one single attributeplayframework scala slick如何更新一个属性
【发布时间】:2018-01-18 19:02:07
【问题描述】:

您好,我只想更新模型的一个值并将其存储到数据库中。

我试试这个:

  def updateProcessTemplateApproveProcessId(processTemplate: ProcessTemplatesModel, approveProcessInstanceId: Int): Future[Int] = {

    val action = for {
      processTemplatesUpdate <- processTemplates if processTemplatesUpdate.id === processTemplate.id // WHERE Statement
    } yield processTemplatesUpdate.approveProcessInstance = Some(approveProcessInstanceId) // SELECT Statement

    db.run(action.update(Some(true)))
  }

但我得到错误重新分配给 val 是不允许的...那是正确的;)所以我将模型中的属性更改为 var。

case class ProcessTemplatesModel(
                                  id: Option[Int] = None,
                                  title: String,
                                  version: String,
                                  createdat: Option[String],
                                  updatedat: Option[String],
                                  deadline: Option[Date],
                                  status: Option[String],
                                  comment: Option[String],
                                  checked: Option[Boolean],
                                  checkedat: Option[Date],
                                  approved: Option[Boolean],
                                  approvedat: Option[Date],
                                  deleted: Boolean,
                                  approveprocess: Int,
                                  trainingsprocess: Option[Int],
                                  previousVersion: Option[Int],
                                  originTemplate: Option[Int],
                                  client: Int,
                                  var approveProcessInstance: Option[Int],

在这种情况下我的文件是什么?

提前致谢

【问题讨论】:

    标签: scala playframework


    【解决方案1】:

    不要更改您的案例类别。假设 processTemplatesTableQuery,请改为执行以下操作:

    val query = for {
      processTemplatesUpdate <- processTemplates if processTemplatesUpdate.id === processTemplate.id
    } yield processTemplatesUpdate.approveProcessInstance
    
    val action = query.update(Some(approveProcessInstanceId))
    db.run(action)
    

    【讨论】:

    • 只是想知道,我们应该只使用for comp 一个语句吗?
    【解决方案2】:

    如果你想要一个班轮(假设 processTemplates 是一个 TableQuery 对象)

    db.run(processTemplates.filter(_.id === processTemplate.id).map(_. approveProcessInstanceId).update(Some(true)))
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多