2016-05-27 5 views
0

Я использую Slick 2.1 и делаю довольно стандартный JOIN. Однако, когда я пытаюсь ограничить количество строк, возвращаемых с помощью «take()», я получаю ошибку компиляции.Slick - Join Table с Ряды Ограничить

запрос ...

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[?] 

Почему я не могу просто добавить в "взять()" здесь ?!

Спасибо!

ответ

1

На самом деле ваше выражение недействительно синтаксический: вы вставили для понимания, о сторожевом, прежде чем пытаться сделать еще один звонок в цепи таблицы преобразований.

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

Чтобы исправить, у вас есть один из трех вариантов:

  • заменяющих if с filter,
  • или поставить if после take,
  • или применить take к результату for понимание