2
Ich muß nächste Fallklassen in der Transaktion mit dem Speichern von ids Beziehung einzufügen:Slick 3 Verbundlisteneinsatz in der Transaktion
case class A (id: Long, bList: List[B])
case class B (id: Long, aId: cList: List[C])
case class C (id: Long, bId: Long)
Ich weiß, dass seine leicht innerhalb Entität mit einer Liste zu speichern:
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)
}
Aber ich habe keine Lösung gefunden, um bList-Element-ID für korrekte cList-Elemente zu speichern. Ich brauche so etwas und ich weiß, dass es nicht funktioniert:
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)
}
Könnten Sie bitte helfen Sie mir damit?