簡體   English   中英

Scala Slick刪除不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM