您使用的是Postgres,因此您需要import scala.slick.driver.PostgresDriver.simple._ 和scala.slick.driver.PostgresDriver 而不是jdbc,这同样适用于定义架构的位置。
编辑:
这有点超出我的知识范围,我不能 100% 确定,但我会试一试。
PostgresDriver 特征扩展了 JdbcDriver 特征(来自 JdbcProfile.scala),这是特征签名:
trait PostgresDriver extends JdbcDrive
然后JdbcDriver 扩展SqlDriver:
trait JdbcDriver extends SqlDriver
firstOption 方法属于UnitInvoker trait,因此它不依赖于导入的驱动程序,同样适用于list 和first 和其他方法,您可以在Invoker.scala 文件中查看它们. delete 方法是在 DeleteInvoker 类中的 JdbcInvokerComponent 特征中定义的。
我的理解是,当声明 TableQuery 对象时,这是完整的签名:
val table: PostgresDriver.simple.TableQuery[MyTable] = TableQuery[MyTable]
当你用这个签名声明一个表时:
val table: JdbcDriver.simple.TableQuery[MyTable] = TableQuery[MyTable]
我不知道为什么delete 方法不能直接用于Jdbc,可能你必须为此使用Query 然后使用Query.deleteInvoker,但正如我所说我不确定,我也觉得很困惑。