Scala 如何在slick中的左联接生成的可选表上进行筛选
我需要对scalaScala 如何在slick中的左联接生成的可选表上进行筛选,scala,slick,Scala,Slick,我需要对scalaslick中的左连接生成的可选表的属性应用过滤器。我在网上找不到关于这个问题或任何类似问题的任何文档 考虑以下查询: val query = FirstTable joinLeft SecondTable on (_.foreignId === _.id) 我想按第二个表的属性进行筛选: query.filter { case (firstTable, secondTableOpt) => secondTableOpt.attribute === "value" }
slick
中的左连接生成的可选表的属性应用过滤器。我在网上找不到关于这个问题或任何类似问题的任何文档
考虑以下查询:
val query = FirstTable joinLeft SecondTable on (_.foreignId === _.id)
我想按第二个表的属性进行筛选
:
query.filter {
case (firstTable, secondTableOpt) => secondTableOpt.attribute === "value"
}
显然,这不会编译,因为secondTableOpt
是一个Rep[Option[SecondTable]]
。在Rep
对象上似乎没有.get
方法
应该有一种方法可以在slick
中编写,有人知道如何实现这一点吗
谢谢你因为你需要在你的
第二个表中过滤结果
在结果中,最好在左联接之前过滤。所以代码是这样的:
val filteredSecondTable = SecondTable.filter(_.attribute === "value")
val query = FirstTable joinLeft filteredSecondTable on (_.foreignId === _.id)
为什么不在加入之前过滤
SecondTable
?好吧,因为我以前根本没有想过过滤!可能就是这个了,非常感谢!我将把它作为一个答案来更好地解释它