Slick - 如果列为空,则过滤行
Posted
技术标签:
【中文标题】Slick - 如果列为空,则过滤行【英文标题】:Slick - Filter Row if Column is Null 【发布时间】:2015-04-04 07:29:47 【问题描述】:如果列为空,我如何过滤 Slick 中的行?
val employees = Queryable[Employees]
// Error
val query = employees.filter( _.terminationDate == Nil )
可能需要注意的是
terminationDate: Option[String]
我正在使用直接嵌入。
【问题讨论】:
【参考方案1】:Slick 有自己的原因检查列中的空值:
val query = employees.filter(_.terminationDate.isNull)
相反的是isNotNull
。
或者在较新版本的 Slick 中:
val query = employees.filter(_.terminationDate.isEmpty)
和
val query = employees.filter(_.terminationDate.isDefined)
【讨论】:
我以为会是这样,但使用您的代码我得到:Type mismatch. Expected (Employees) => Boolean, actual (Employees) => Any
老实说,我无法重现您的错误,而且该错误似乎并不相关。
我使用的是直接嵌入。也许这就是原因。
我在使用带有常规提升嵌入的代码时遇到错误。你也在使用第 2 版吗?
@CharlieBrown 它应该仍然可以工作 - 只要您的列被定义为 column[Option[SomeType]]
而不是 column[SomeType]
。我认为isEmpty
和isDefined
只定义在Rep[Option[_]]
类型的列上以上是关于Slick - 如果列为空,则过滤行的主要内容,如果未能解决你的问题,请参考以下文章