Slick 2无法编译返回元组的查询

时间:2014-04-05 10:27:48

标签: scala slick

我现在正在尝试使用Slick的compiled queries功能。对于简单查询,它工作正常,但涉及与Tuple返回类型的连接的查询会导致编译错误。

这是我试图用编译的查询重写的一个dao方法:

def getByArticle(id: Int)(implicit session: JdbcBackend#Session) = {
      comments
        .filter(_.articleId === id)
        .leftJoin(users).on(_.userId === _.id)
        .list
    }

当我试图像那样修改它时

val byArticleCompiled = Compiled((id: Column[Int]) => comments
  .filter(_.articleId === id)
  .leftJoin(users).on(_.userId === _.id)
)

def getByArticle(id: Int)(implicit session: JdbcBackend#Session) = byArticleCompiled(id).list

发生以下编译错误:

  

[错误]   计算类型   CommentsRepositoryComponentImpl.this.profile.simple.Column [Int] =>   scala.slick.lifted.WrappingQuery [(CommentsRepositoryComponentImpl.this.Comments,   CommentsRepositoryComponentImpl.this.Users),(CommentsRepositoryComponentImpl.this.Comments#TableElementType,   CommentsRepositoryComponentImpl.this.Users#TableElementType)]不能   编译(作为类型C)[错误] val byArticleCompiled =   编译((id:Column [Int])=>评论

背后是否存在任何概念问题,或者我只是做错了什么?

1 个答案:

答案 0 :(得分:1)

似乎联接生成的这些查询的Executable类型类存在问题。作为解决方法,附加像.withFilter(_ => true)这样的虚拟操作使其编译。我们将研究2.0.2(https://github.com/slick/slick/issues/746)。