斯卡拉油滑删除不工作(Scala Slick delete not working)

2019-10-31 03:23发布

从我tablequery对象删除时,我应该能够编写:

FacebookAuths.delete

但它抱怨删除不TableQuery的方法,即使我尝试:

Users.filter(_.id === 1337).delete

它仍然说,删除不是方法,但现在的查询对象。

我究竟做错了什么? 我进口:

import scala.slick.lifted._
import scala.slick.driver.JdbcDriver.simple._

和所有其他的东西像firstOption工作。

我使用的Postgres。

谢谢!

Answer 1:

您正在使用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特点,所以它不依赖从进口的驱动程序,同样的道理也适用于listfirst等方法,可以检查它们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 ,但正如我所说,我不知道,它看起来混乱我。



文章来源: Scala Slick delete not working