【问题标题】:Compiled query doesn't recognize 'exists' method编译的查询无法识别“存在”方法
【发布时间】:2017-10-11 18:20:45
【问题描述】:

在将应用程序从 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

现在,我收到一个错误提示

无法解析符号存在

我做错了吗?还是一个错误?

【问题讨论】:

    标签: scala playframework slick slick-3.0 play-slick


    【解决方案1】:

    在您将Query“提升”为Compiled 后,您必须使用map 将其转换为不同的Query。例如:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-29
      • 1970-01-01
      相关资源
      最近更新 更多