Geçerli soru next one ile ilişkilidir, ancak şimdi veriyi veritabanına eklemek yerine eklemek gerekiyor.slick 3 iki leftJoin sorgu sonucu eşleme sınıfları
Önümüzdeki üç vaka sınıfları:
case class A (id: Long, bList: List[B])
case class B (id: Long, aId: cList: List[C])
case class C (id: Long, bId: Long)
Ve iki leftJoin
fonksiyonları ile sorgu ve filtreleme atable sonuçlar için incomingAId
:
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
Sonraki sorgu çalışır ve sonuç geçerli görünüyor ama değil mi' Bunu vaka sınıflarına göre işlemek kolaydır. Ayrıca, executionResult
Seq[Nothing]
türü vardır ve haritalama işlemi böyle bir şeyi gerektirir:
database.run(query).map{ executionResult =>
executionResult.map { vectorElement: [Tuple2[Tuple2[A, Option[B]], Option[C]]]
...
}
}
Seq [Hiçbir şey] (sorguda değişiklikleri) engellemek için herhangi bir uygun yolu var mı? Ya da sorgu sonucu türü iyi ise, lütfen yukarıdaki vaka sınıflarına nasıl eşleştirileceğini nasıl çözebilir misiniz?