【发布时间】:2016-03-25 09:24:32
【问题描述】:
我需要在事务中插入下一个案例类并保存 ids 关系:
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)
}
但我没有找到返回 bList 元素 ID 以正确保存 cList 元素的解决方案。我需要这样的东西,但我知道它不起作用:
def saveAWithBListWithCList(aTableObject: A): Future[Long] = {
val saveQuery = (for {
savedAId <- (aTable returning aTable.map(_.id)) += aTableObject
_ <- aTableObject.bList.map { bObject =>
val savedBId = (bTable returning bTable.map(_.id)) += bObject.copy(_.aId = savedAId)
cTable ++= bObject.cList.map(_.copy(bId = savedBId))
}
} yield savedAId).transactionally
database.run(saveQuery)
}
你能帮帮我吗?
【问题讨论】: