我有多个表,我需要将它们全部与Slick查询一起返回。
case class A(id: Int, name: String)
case class B(id: Int, name: String)
case class C(id: Int, name: String)
case class AtoC(aId: Int, dId: Int)
case class D(id: Int, name: String)
假设我有与上述案例类匹配的表定义,我想返回类似(A, B, C, Seq[D])
的内容,但我找不到一种方法来编写它甚至可以编译的地方。
我尝试过这样的事情:
for {
a <- AQuery.innerJoin(B)....
...
AtoC <~ a.innerJoin(AtoCQuery).on(....)
但这甚至不会编译。
答案 0 :(得分:0)
尝试这样的事情:
val q = for (
((((A, B), AtoC), C), D)
<- AQuery.innerJoin(BQuery).on(_.id === _.id) // A.id == B.id
.innerJoin(AtoCQuery).on(_._1.id === _.aId) // A.id == AtoC.aId
.innerJoin(CQuery).on(_._2.cId === _.id) // AtoC.cId == C.aId
.innerJoin(DQuery).on(_._1._1._1.id === _.id) // A.id == D.id
) yield (A, B, C, D)
val result = q.run
此代码未经过测试。 希望它有所帮助!
此致