编译查询无法识别 'exists' 方法

Compiled query doesn't recognize 'exists' method

我在将我的应用程序从 play 2.3.x 更新到 play 2.4.11.

时遇到了很多麻烦

我首先将 play-slick 从版本 0.8.1 更新到 1.1.1,这意味着将 slick 从 2.1.0 更新到 3.1.0。

我有一个通用的 class,它聚合了像 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

现在,我收到一条错误消息说

Cannot resolve symbol exists

我做错了吗?还是错误?

在 "lifted" 将 Query 转换为 Compiled 之后,您必须使用 map 将其转换为不同的 Query。例如:

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