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
理解的结果
我正在使用 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
理解的结果