scala – Slick左/右/外连接与选项
发布时间:2020-12-16 09:34:51 所属栏目:安全 来源:网络整理
导读:在Slick示例中,有几个连接示例,其中一个结果列可以为空,因为执行左,右或外部连接时可能会出现这种情况。例如: val explicitLeftOuterJoin = for { (c,s) - Coffees leftJoin Suppliers on (_.supID === _.id)} yield (c.name,s.name.?) 但是如果我想要
在Slick示例中,有几个连接示例,其中一个结果列可以为空,因为执行左,右或外部连接时可能会出现这种情况。例如:
val explicitLeftOuterJoin = for { (c,s) <- Coffees leftJoin Suppliers on (_.supID === _.id) } yield (c.name,s.name.?) 但是如果我想要返回整个映射对象呢?我的意思是: val explicitLeftOuterJoin = for { (c,s) <- Coffees leftJoin Suppliers on (_.supID === _.id) } yield (c,s.?) 这似乎不起作用,因为它抱怨“无法找到类型为scala.slick.lifted.TypeMapper [供应商]的证据参数的隐含值。基本上我希望它返回一个元组列表(Coffee,Option [Supplier]) 为什么这不工作,它的修复是什么?特别是,因为这样做很好: val q = for { c <- Coffees s <- Suppliers } yield (c,s) (我知道这是一个内部联盟) 解决方法
更新:这将被解决,并且在2014年底的Slick 3.0中工作,不再需要以下解决方法
这是Slick目前的限制。你必须打电话。在每一列单独。然而,您可以放置??一个名为在表类中,这样做在一个中心位置,从而得到。完整的行。这个play-slick example code包含涉及一些生成的代码的通用解决方案。我们也有一个PR that adds auto-generation of a ? method排队。 从长远来看,我们将支持Slick中外部连接的变体,Slick完全了解所涉及的类型,您不需要指定。任何地方。现在我们必须生活在涉及代码生成的解决方法中。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |