在Slick中进行外部联接后的计算列

时间:2018-10-30 17:40:15

标签: scala upgrade slick slick-3.0

我正在尝试执行以下操作:

streetTable.joinLeft(countQuery).on(_.streetId === _._1).map {
    case (_street, _cnt) => (_street.streetId, _cnt.map(_._2).ifNull(0) > 0)
}

countQuery有两列,(整数,整数)。我想向左联接,并获得一个布尔列,该布尔列仅在计数大于0时才为true,如果联接的countQuery端没有任何内容,则默认为false。

我还尝试将_cnt.map(_._2).ifNull(0) > 0更改为_cnt.map(_._2 > 0).getOrElse(false)。在两种情况下,都会出现此编译器错误:

could not find implicit value for evidence parameter of type slick.ast.TypedType[(slick.lifted.Rep[Int], slick.lifted.Rep[Int])]

可能有必要指出,我正在从Slick 2.1迁移到3.1,而我正在使用的2.1代码是:_cnt._2.ifNull(0.asColumnOf[Int]) > 0

我一直在阅读Slick 3.0 upgrade guideSlick 3.1 upgrade guide,并且已经成功迁移了大部分代码,这只是我遇到的少数障碍之一。

0 个答案:

没有答案