Скомпилированный запрос не распознает метод «существует»

У меня много проблем при обновлении моего приложения с play 2.3.x до play 2.4.11.

Я начал с обновления play-slick с версии 0.8.1 до 1.1.1, что подразумевает обновление slick с 2.1.0 до 3.1.0.

У меня есть универсальный класс, который объединяет базовый метод, такой как findById.

Проблема, с которой я сталкиваюсь в данный момент:

У меня тоже работал этот метод:

def existsById(id: Long)(implicit s: Session): DBIO[Boolean] = 
    tableReference.filter(_.id === id).exists.result

Я решил использовать скомпилированные запросы, поэтому сделал следующее:

private val queryById = Compiled((id: Rep[Option[Long]]) => tableReference.filter(_.id === id))

def existsById(id: Option[Long])(implicit s: Session): DBIO[Boolean] =
    queryById(id).exists.result

и теперь я получаю сообщение об ошибке

Не удается разрешить символ

Я делаю это неправильно? или это баг?


person RafaelTSCS    schedule 12.05.2017    source источник


Ответы (1)


После того, как вы «подняли» Query в Compiled, вы должны использовать map, чтобы преобразовать его в другой Query. Например:

val existsById = queryById.map(q => (id: Rep[Long]) => q(id).exists)
person SergGr    schedule 13.05.2017