問題は、現在、Quillasyncがトランザクション内の同時操作をサポートしていないことでした。
したがって、動物の挿入を順番に行う必要がありました:
ctx.transaction { implicit ec =>
for {
personId <- ctx.run(insertPersonQuery)
animals = personCreate.animals.map(Animal.apply(personId, _))
_ <- animals.foldLeft(Future.successful(0l)) {
case (fut, animal) =>
fut.flatMap(_ => insertAnimal(animal))
}
} yield personId
}
また、バッチ挿入を使用することをお勧めします:)
@fwbrasilと@mentegyの支援に感謝します!