首页 > 解决方案 > 显式编写联接查询时光滑不联接

问题描述

    val query = Foo
      .join(Bar)
      .on(_.fooId === _.id)
      .filter { case (foo, bar) =>
        foo.someId === 666 && bar.status === 1
      }
      .map { case (_, bar) => (bar.id, bar.name) }
      .take(1)

这段代码变成sql语句如下:

select x2.`id`, x2.`name` 
from `Bar` x3, `Foo` x2 
where ((x3.`someId` = 666) and (x2.`status` = 1)) and (x3.`fooId` = x2.`id`) 
limit 1

正如 slick 的文档所说(https://scala-slick.org/doc/3.1.0/sql-to-slick.html#explicit-inner-joins),语法joinon产生显式连接查询。那么这里发生了什么?

标签: scalaslick

解决方案


推荐阅读