如何使用Slick Query的收益率?所以想象我有这样的代码
def rolesQuery(owner_id: UUID) = for {
(role, rel) <- Roles innerJoin AbilitiesMapping on (_.id === _.obj_id) if rel.owner_id === owner_id.bind
} yield role
我这样使用
val rolesQuery: lifted.Query[Roles.type, Role] = DBManager.rolesQuery(user_id)
rolesQuery.foreach((role: Role) => {
println(modifiedRole(role))
})
但如果我想生成另一个带有修改角色的容器怎么办?我试过这个
val lst = for (role <- rolesQuery)
yield modifiedRole(role)
但它在lst
中返回WrappingQuery而不是实际的case类对象。我看到有mapResults
方法,但它返回UnitInvoker类型的对象而不是Role
的容器 - s
我该怎么办?我应该在Query对象上调用.list()
吗?
答案 0 :(得分:0)
是的,如果您想要在理解中处理结果,则需要获取数据,list
将完成该操作。就目前而言,你的for-comp似乎只是从一个查询映射到另一个查询:
val lst = for (role <- rolesQuery.list)
yield modifiedRole(role)
确保您在范围内有隐式Session
。