【发布时间】:2018-03-02 22:53:41
【问题描述】:
假设我有两张桌子:
people:
id: long | uuid: UUID | name: String
----
cars
id: long | owner_id: long | name: String
其中owner 是people.id 的外键。
我有一个查询,根据车主的 uuid(只是一个 API 设计)选择所有车主。
问题是:如何在一个事务中执行以下查询,我必须通过其uuid (SELECT id from people where uuid = ?) 和SELECT * from cars where owner_id = id 获取people.id?
当然,我一开始可以通过uuid从people表中获取id,比如
val ownerId = db run people.filter(_.uuid === uuid.bind).map(_.id).result.head
然后运行另一个查询以通过owner_id 选择汽车:
val cars = ownerId.flatMap {
id => db run cars.filter(_.ownerId === id).result
}
但这不会发生在一笔交易中。有什么想法吗?
【问题讨论】:
标签: scala transactions slick