[英]Scala Slick delete not working
從我的tablequery對象刪除時,我應該能夠寫:
FacebookAuths.delete
但它抱怨說,即使我嘗試刪除也不是TableQuery中的方法:
Users.filter(_.id === 1337).delete
仍然在說delete不是方法,而是在Query對象上。
我究竟做錯了什么? 我的進口是:
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
文件中進行檢查。 相反,在JdbcInvokerComponent
特征內的DeleteInvoker
類中定義delete
方法。
我的理解是,在聲明TableQuery
對象時,這是完整簽名:
val table: PostgresDriver.simple.TableQuery[MyTable] = TableQuery[MyTable]
在聲明帶有此簽名的表時:
val table: JdbcDriver.simple.TableQuery[MyTable] = TableQuery[MyTable]
我不知道為什么delete
方法不能直接用於Jdbc
,可能您必須先使用Query
然后再使用Query.deleteInvoker
,但是正如我所說的那樣,我也感到困惑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.