Slick - 加入 Table 行数限制

Slick - Join Table with Rows Limit

我正在使用 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()"?!

谢谢!

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

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

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

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