【问题标题】:Slick - Filter Row if Column is NullSlick - 如果列为空,则过滤行
【发布时间】:2015-04-04 07:29:47
【问题描述】:

如果列为空,我如何过滤 Slick 中的行?

val employees = Queryable[Employees]

// Error
val query = employees.filter( _.terminationDate == Nil )

可能需要注意的是

terminationDate: Option[String]

我正在使用直接嵌入。

【问题讨论】:

    标签: scala slick slick-2.0


    【解决方案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]。我认为isEmptyisDefined 只定义在Rep[Option[_]] 类型的列上
    猜你喜欢
    • 2016-06-27
    • 2016-06-01
    • 2015-04-25
    • 1970-01-01
    • 1970-01-01
    • 2015-05-30
    • 2014-12-20
    • 2022-06-10
    • 1970-01-01
    相关资源
    最近更新 更多