【发布时间】:2012-07-31 23:16:54
【问题描述】:
我有一个List[ Tuple3[User, Order, OrderItem] ]的查询结果
要创建 Invoice 的案例类实例,它的伴生对象需要一个 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]] ],这可以让我对结果进行平面映射,但不确定这对我有什么好处。
无论如何,必须是更简洁/优雅的问题解决方案
谢谢
【问题讨论】:
标签: list scala mapping instance one-to-many