2017-11-09 12 views
1

を実行しているのクラッシュが、私は滑らかな、多くの関係にScalaのスリックページネーションのコンパイルが、

val query = for { 
((u,a),j) <- users join address on(_.idUser === _.idUser) join 
       jobs on(_._1.idUser == _.idUser) 
} yield (u,a,j) 

val res = db.run(query.groupBy(_._1.idUser).flatMap(_._2) 
        .drop((page - 1) * perPage).take(perPage).result) 

を1でクエリに参加している私は、私が最初にidUserによってgroupping午前理由です、ユニークユーザーを持っている必要があります。問題はコードがコンパイルされますが、私が実行すると滑らかなエラーが発生します: "slick.SlickTreeExceptions:未解決のモナディック結合:バインドs2の非ピュアセレクト節"

このページ設定を達成する方法については、最も感謝します。 おかげ

+0

私はそれを把握しました!私はこれを[この回答](https://stackoverflow.com/questions/33633385/slick-3-how-to-drop-and-take-on-collections-with-some-relations)と同様にしました。 –

答えて

0

_._1.idUser == _.idUser_._1.idUser === _.idUser

SlickTreeExceptionmonadic joinsapplicative joinsに脱糖されている場合thrownであるべきです。

Monadic joins are created with flatMap . They are theoretically more powerful than applicative joins because the right-hand side may depend on the left-hand side. However, this is not possible in standard SQL, so Slick has to compile them down to applicative joins, which is possible in many useful cases but not in all of them (and there are cases where it is possible in theory but Slick cannot perform the required transformation yet). If a monadic join cannot be properly translated, it will fail at runtime.

あなたは.sortBy(_._1.idUser).groupBy(_._1.idUser).flatMap(_._2)を変更することはできますか?

関連する問題