光滑3两个leftJoin查询结果到类映射

时间:2016-04-05 19:52:00

标签: tuples left-join slick-3.0

当前问题与next one相关,但现在我需要从数据库中读取数据而不是插入数据。

我接下来有三个案例类:

case class A (id: Long, bList: List[B])
case class B (id: Long, aId: cList: List[C])
case class C (id: Long, bId: Long)

使用两个leftJoin函数和incomingAId进行查询以过滤aTable结果:

  val query = (for {
    ((aResult,bResult),cResult) <- aTable.filter(_.id === incomigAId)
      .joinLeft(bTable).on(_.id === _.aId)
      .joinLeft(cTable).on(_._2.map(_.id) === _.bId)
  } yield ((aResult,bResult),cResult)).result.transactionally

下一个查询有效,结果看起来有效,但是对于案例类来说,它并不容易处理。此外,executionResult具有Seq[Nothing]类型和映射过程需要类似的内容:

database.run(query).map{ executionResult =>
  executionResult.map { vectorElement: [Tuple2[Tuple2[A, Option[B]], Option[C]]]
     ...
  }
}

有没有正确的方法来阻止Seq [Nothing](查询中的更改)? 或者,如果查询结果类型正常,您能否分享解决方案如何将其映射到上面的案例类?

1 个答案:

答案 0 :(得分:0)

现在我正在使用下一个解决方案,但我想可以优化某些代码(例如 EventLogPermission eventLogPermission = new EventLogPermission(EventLogPermissionAccess.Administer, "."); eventLogPermission.PermitOnly(); 替换其他内容)。

groupBy