Transactions Slick 3在事务中插入复合列表

Transactions Slick 3在事务中插入复合列表,transactions,slick-3.0,Transactions,Slick 3.0,我需要在保存ID关系的事务中插入下一个案例类: case class A (id: Long, bList: List[B]) case class B (id: Long, aId: cList: List[C]) case class C (id: Long, bId: Long) 我知道用一个列表保存实体很容易: def saveAWithBList(aTableObject: A): Future[Long] = { val saveQuery = (for { sav

我需要在保存ID关系的事务中插入下一个案例类:

case class A (id: Long, bList: List[B])
case class B (id: Long, aId: cList: List[C])
case class C (id: Long, bId: Long)
我知道用一个列表保存实体很容易:

def saveAWithBList(aTableObject: A): Future[Long] = {

  val saveQuery = (for {
     savedAId <- (aTable returning table.map(_.id)) += aTableObject
     savedBRows <- bTable ++= aTableObject.bList.map(_.copy(aId = savedAId))
  } yield savedAId).transactionally

  database.run(saveQuery)
}
def saveAWithBList(aTableObject:A):未来[Long]={
val saveQuery=(用于{

savedAId下一个解决方案工作正常:

  def saveAWithBListWithCList(aTableObject: A): Future[Long] = {

    val saveQuery = (for {
      savedAId <- (aTable returning aTable.map(_.id)) += aTableObject
      _ <- DBIO.sequence(aTableObject.bList.map { bObject =>
        ((bTable returning bTable.map(_.id)) += bObject.copy(aId = savedAId)).flatMap { bIdAction =>
          cTable ++= bObject.cList.map(_.copy(bId = bIdAction.result))
        }
      })
    } yield savedAId).transactionally

    database.run(saveQuery)
  }
def saveAWithBListWithCList(aTableObject:A):未来[Long]={
val saveQuery=(用于{
萨维代德
cTable++=bObject.cList.map(u.copy(bId=bIdAction.result))
}
})
}交易性收益率
database.run(saveQuery)
}
  def saveAWithBListWithCList(aTableObject: A): Future[Long] = {

    val saveQuery = (for {
      savedAId <- (aTable returning aTable.map(_.id)) += aTableObject
      _ <- DBIO.sequence(aTableObject.bList.map { bObject =>
        ((bTable returning bTable.map(_.id)) += bObject.copy(aId = savedAId)).flatMap { bIdAction =>
          cTable ++= bObject.cList.map(_.copy(bId = bIdAction.result))
        }
      })
    } yield savedAId).transactionally

    database.run(saveQuery)
  }