Slick 3.0以降が対象。

参考リンク

ノウハウ

3テーブル以上のJoin

def allDev(): Future[Seq[(JsValue, JsValue)]] = {
    val a = for {
        ((p, mToP), m) <- projects join
          memberToProject on (_.key === _.projectKey) join
          members on (_._2.memberKey === _.key)
      } yield (p.name, m.name)

    db.run(a.result)
}

参考: The Rough Experience with Slick | Scalac

JSON型(JsValue)の関数

slick-pg/core/src/main/scala/com/github/tminglei/slickpg/json at master · tminglei/slick-pg

トラブルシューティング

slick-joda-mapperを使ってもDateTime(joda-time)で比較条件を書けない

com.github.tototoshi.slick.XXXJodaSupport._をインポートしていることを確認してください。

以下がコンパイルできればOKです。

Members.filter(x => x.id === m.id && x.beginTime === m.beginTime).delete)

参考: scala – Querying with type mapped columns in Slick – Stack Overflow