【问题标题】:Slick - Join Table with Rows LimitSlick - 使用行数限制连接表
【发布时间】:2016-09-26 01:17:01
【问题描述】:

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

谢谢!

【问题讨论】:

    标签: scala slick slick-2.0


    【解决方案1】:

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

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

    要修复,您有以下三种选择之一:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-31
      • 2023-03-22
      • 2018-03-09
      • 1970-01-01
      • 2020-08-02
      • 1970-01-01
      相关资源
      最近更新 更多