光滑 - 连接带有行限制的表

时间:2016-05-27 16:01:47

标签: scala slick slick-2.0

我正在使用Slick 2.1并且正在做一个相当标准的JOIN。但是,当我尝试使用“take()”限制返回的行数时,我收到编译错误。

查询...

var samples = for {
(sample, user) <- this 
      .join(users) on (_.userId === _.id) if user.id === 123
      .take(50)
  } yield (sample)

编译错误......

type mismatch;  found   : Iterable[String]  required: scala.slick.lifted.Column[?]

为什么我不能简单地在这里添加“take()”?!

谢谢!

1 个答案:

答案 0 :(得分:1)

实际上你的表达式在语法上是无效的:在尝试在表转换链中进行另一次调用之前,你已经插入了for-comprehension guard语句。

    .join(users) on (_.userId === _.id) if user.id === 123
                                        ^ Right here
    .take(50)

要修复,您有以下三个选项之一:

  • if替换为filter
  • 或将if放在take
  • 之后
  • 或将take应用于for理解
  • 的结果