我刚刚开始将我的脚趾浸入Slick。
在咖啡供应商的例子中,我试着" Case If Then Else"像这样:
val q = coffees.withFilter(_.price > 9.0).flatMap({ c =>
suppliers.withFilter(_.id == c.supID).map({ s =>
val t = c.name > s.name
Case If t Then { (c.name, s.name) } Else { (s.name, c.name) }
})
})
编译器发出错误:
could not find implicit value for evidence parameter of type scala.slick.ast.TypedType[(scala.slick.lifted.Column[String], scala.slick.lifted.Column[String])]
Case If t Then { (c.name, s.name) } Else { (s.name, c.name) }
^
对于像List这样的其他复合类型也有很多相同的错误。我想我自己定义一个隐含的问题类型,但我不知道从哪里开始。
答案 0 :(得分:3)
目前不支持,我创建了一张票:https://github.com/slick/slick/issues/866
解决方法:为每个标量值编写单独的If Then构造
答案 1 :(得分:2)
尝试:
val q = coffees.withFilter(_.price > 9.0).flatMap({ c =>
suppliers.withFilter(_.id == c.supID).map{ s =>
(Case If c.name > s.name Then c.name Else s.name,
Case If c.name > s.name Then s.name Else c.name)}})