从我tablequery对象删除时,我应该能够编写:
FacebookAuths.delete
但它抱怨删除不TableQuery的方法,即使我尝试:
Users.filter(_.id === 1337).delete
它仍然说,删除不是方法,但现在的查询对象。
我究竟做错了什么? 我进口:
import scala.slick.lifted._
import scala.slick.driver.JdbcDriver.simple._
和所有其他的东西像firstOption工作。
我使用的Postgres。
谢谢!
您正在使用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
特点,所以它不依赖从进口的驱动程序,同样的道理也适用于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
,但正如我所说,我不知道,它看起来混乱我。