1

Slick に関する簡単な質問を希望します。これが十分に文書化されている場合はお詫びします-検索で何かを見落としている可能性があります.

次のように構築された集計クエリがあります。

def doQuery(/* ... */) = for {
  a <- Query(TableA)
  b <- a.relationship.where // ...
  c <- b.relationship.where // ...
} yield (a, b, c)

これは私に a を返しますQuery[(A, B, C)]

ケースクラスもあります:

case class Aggregate(a: A, b: B, c: C)

Query[Aggregate]仲間の開発者が必要に応じて or を呼び出して or を取得できるように.list().firstOption()クエリを に変換したいと考えています。ListOption

私は当然.map()メソッド onを選びましたが、それには処理方法がわからないQuery暗黙の引数があります。Shape

これはSlickで簡単ですか?現時点では v1.0.1 を使用していますが、2.0 にアップグレードすることも可能です。

よろしくお願いします、

デイブ

4

2 に答える 2

3

いろいろいじってみた結果、Slick 1 ではこれは不可能だという結論に達しました。

Slick 2 では、演算子を使用し<>て、理解のための利回り部分で組み立てられた射影を変換できます。

def doQuery(/* ... */) = for {
  a <- Query(TableA)
  b <- a.relationship.where // ...
  c <- b.relationship.where // ...
} yield (a, b, c) <> (Aggregate.tupled, Aggregate.unapply)

.listこれは、および と組み合わせて期待どおりに機能し.firstOptionます。.insert.updateおよびを使用しようとした結果がどうなるかはわかりません.delete

于 2013-10-24T10:58:59.927 に答える