我需要对scala slick
中左连接生成的可选表的属性应用过滤器。我无法在网上找到关于此问题或任何类似问题的任何文档。
考虑以下问题:
val query = FirstTable joinLeft SecondTable on (_.foreignId === _.id)
我想通过SecondTable
:
query.filter {
case (firstTable, secondTableOpt) => secondTableOpt.attribute === "value"
}
显然这不会编译,因为secondTableOpt
是Rep[Option[SecondTable]]
。 .get
对象上似乎没有Rep
方法。
应该有办法在slick
中写这个,有谁知道如何实现这个目标?
谢谢
答案 0 :(得分:5)
由于您需要在结果中过滤SecondTable
中的结果,因此最好在左连接之前执行此操作。所以代码将是这样的:
val filteredSecondTable = SecondTable.filter(_.attribute === "value")
val query = FirstTable joinLeft filteredSecondTable on (_.foreignId === _.id)