Считайте, что у меня есть следующие таблицы: A, B и AB.
Таблицы AB - это таблица связей между A и B.
Когда я выполняю простое действие insertOrUpdate, оно успешно выполняется. У меня есть 1 строка в таблице.
val a = TableQuery[A]
val b = TableQuery[B]
val ab = TableQuery[AB]
Await.result(db.run(ab.insertOrUpdate(ABLink(1,1)),Duration.Inf)
println(Await.result(db.run(ab.length.result, Duration.Inf)))
//prints 1
Но когда я читаю из таблиц A и B, получаю идентификаторы, а затем вставляю в таблицу AB, используя для понимания, строка не вставляется. Программа завершается без ошибок.
val a = TableQuery[A]
val b = TableQuery[B]
val ab = TableQuery[AB]
val action = for {
aId <- a.map(_.id).result.headOption
bId <- b.map(_.id).result.headOption
}
yield ab.insertOrUpdate(ABLink(aId.get,bId.get))
Await.result(db.run(action),Duration.Inf)
println(Await.result(db.run(ab.length.result, Duration.Inf)))
//prints 0
Может кто-то пролить свет на это поведение?