2

Slickで左結合をしようとしています。

2 つのケース クラス (Book と Author) と 2 つのテーブルがあります。

私がこれを行う場合:

(for {
       (book, author) <- Books leftJoin Authors on (_.authorId === _.id)
     } yield (book, author.?)
).list

結果は List[Book, Option[Authors.type]] で、List[Book, Option[Author]] が必要です

クエリで間違った型を取得する理由を知っていますか?

注 : Authors オブジェクトは Author ケース クラスとうまくリンクしています。

object Authors extends Table[Author]("author"){...}

ありがとう :)

ロイック

4

1 に答える 1

0

回避策はありますが、それが正しい解決策かどうかはわかりません。

著者のオプションの列を取得し、結果に対して map 関数を使用して (Book, Author) タプル オブジェクトを作成します。

val query = for {
(book, author) <- Books leftJoin Companies on (_.authorId === _.id)
} yield (book, author.id.?, author.name.?)

val result = query.list.map(row => (row._1, row._2.map(value => Author(Option(value), row._3.get))))
于 2013-03-08T07:40:09.777 に答える