List [Tuple3 [User、Order、OrderItem]]のクエリ結果があります
請求書のケースクラスインスタンスを作成するために、そのコンパニオンオブジェクトはUser、Order、およびList[OrderItem]を取ります。
現在、私はそれを次のようにハッキングしています:
def getInvoice(orderNum: String): Option[Invoice] = {
val res =
dao.byOrderNum(orderNum) // List[ Tuple3[User, OrderEntry, OrderItem] ]
if(!res.isEmpty) {
val(user, order) = (res(0)._1, res(0)._2)
val items = res map { case(_, _, oi: OrderItem) => oi }
Some( Invoices.apply(user, order, items) ) // gets an Invoice
}
else None
}
クエリ結果をList[ Option[Tuple3[User, Order, OrderItem]] ]
、結果に対してflatMapにすることができますが、それが何を買うのかわかりません。
とにかく、問題に対するより簡潔でエレガントな解決策でなければなりません
ありがとう