我有像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))
}
}
我是新手,所以我想知道这是不是很好的解决方案(我可能找不到任何信息。)? 哦,我忘了,我不是唯一的。
答案 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!