使用以下内容执行简单连接

时间:2015-02-05 22:02:51

标签: scala playframework slick

我的光滑和数据库访问设置如下:

abstract class UserDao {
  def getById(id): Option[User]
}

class UserDaoImpl extends UserDao {
  class Users(....) extends Table[User](...) {
    def id = column[Int]("id", O.PrimaryKey, O.AutoInc)
    ..
    def * = (id, ...) <> (User.tupled, User.unapply)
  }

  val users = TableQuery( new Users(..) )

  def getById(..) { .. }
}

现在假设我有另一个类文章和一个看起来像上面的UserDao的ArticleDao。

case class Article(id: Int, userId: Int, ..)

我如何在光滑的情况下执行innerJoin查询:

select * from users inner join users on users.id = articles.user_id

请指明任何光滑相关的导入,因为我也会遇到这些。

1 个答案:

答案 0 :(得分:0)

导入您的驱动程序(以下假定为postgres)。检查Slick文档以了解如何获取Database对象。

import scala.slick.driver.PostgresDriver.simple._

val query = users.innerJoin(users).on(_.id === _.id)

val result: List[(User, User)] = db.withSession { implicit session =>
  query.run
}

这将返回元组列表