在光滑

时间:2017-12-29 21:09:01

标签: mysql scala slick exists

我有像bellow一样的查询

  override def isOnList(id: Long, value: String)(implicit ex: ExecutionContext): DBIO[Boolean] = {
    tableQuery.filter(e => e.id === id && e.isActive && e.value === value).exists.result
  }

但是当表没有id === id的任何行时,它返回false。我想改变这个。我的修改是

  override def isOnList(id: Long, value: String)(implicit ex: ExecutionContext): DBIO[Boolean] = {
    tableQuery.filter(e => e.id === id && e.isActive).result.flatMap {
      case seq if seq.isEmpty => DBIOAction.successful(true)
      case seq => DBIOAction.successful(seq.exists(_.value==value))
    }
  }

我是新手,所以我想知道这是不是很好的解决方案(我可能找不到任何信息。)? 哦,我忘了,我不是唯一的。

1 个答案:

答案 0 :(得分:1)

您的第一个选项有什么问题?它似乎完全有效!

def isOnList(id: Long, value: String)(implicit ex: ExecutionContext) : Future[Boolean] = 
    db.run(User.filter(e => e.id === id && e.isActive && e.value === value).exists.result)

此方法应根据过滤条件自动返回true或false!