2017-05-12 62 views
1

从Play 2.3.x更新我的应用程序到播放2.4.11时,我面临很多麻烦。编译查询无法识别'exists'方法

我开始通过更新从版本0.8.1到1.1.1的play-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 

现在,我得到一个错误,说

无法解析符号存在

我做错了吗?或者它是一个错误?

回答

2

后你已经“解禁”一QueryCompiled你必须使用map它transfrom到diferent Query。例如:

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