【发布时间】:2019-07-18 09:11:19
【问题描述】:
我目前在我的 scala-slick3 项目中遇到更新查询的问题。我有一个Report-Class,其中包含多个Products,每个Product 包含多个Parts。我想实现一个函数,将这个Report 中的每个Product 中的每个Part 标记为assessed。
我想过做这样的事情:
def markProductPartsForReportAsAssessed(reportId: Int) = {
val query = for {
(products, parts) <- (report_product_query filter(_.reportId === reportId)
join (part_query filter(_.isAssessed === false))
on (_.productId === _.productId))
} yield parts.isAssessed
db.run(query.update(true))
}
现在,当我运行这段代码时,slick 会抛出这个异常:
SlickException: A query for an UPDATE statement must resolve to a comprehension with a single table。
我已经研究过他们的解决方案(如this 或this)对我来说并不是很满意的类似问题。
为什么 slick 会抛出这个异常,或者为什么一开始就有问题?我的印象是我的yield 已经照顾到不“更新多个表”。
提前致谢!
【问题讨论】:
标签: scala playframework slick slick-3.0