0

Slick Queryで yield を使用するにはどうすればよいですか? だから私はこのようなコードを持っていると想像してください

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))
})

しかし、変更された Roles を持つ別のコンテナーを作成したい場合はどうすればよいでしょうか? 私はこれを試しました

val lst = for (role <- rolesQuery)
  yield modifiedRole(role)

ただし、実際のケース クラス オブジェクトではなく、WrappingQueryを返します。lstメソッドがあることがわかりますが、 -sのコンテナーではなく、UnitInvokermapResults型のオブジェクトを返しますRole

私は何をすべきか ?.list()Query オブジェクトを呼び出しますか?

4

1 に答える 1

0

はい、理解のために結果を処理したい場合は、データをフェッチする必要があり、それlistを達成します。現状では、for-comp はあるクエリから別のクエリにマッピングしているようです。

val lst = for (role <- rolesQuery.list)
  yield modifiedRole(role)

Sessionスコープに暗黙的なものがあることを確認してください。

于 2013-05-24T23:43:16.223 に答える