문제

내 TableQuery 개체에서 삭제할 때 다음과 같이 작성할 수 있어야 합니다.

FacebookAuths.delete

하지만 다음과 같이 시도해도 삭제가 TableQuery의 메서드가 아니라고 불평합니다.

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

여전히 삭제는 메소드가 아니지만 이제는 Query 객체에 있다고 말하고 있습니다.

내가 도대체 ​​뭘 잘못하고있는 겁니까?내 수입품은 다음과 같습니다

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

그리고 firstOption과 같은 다른 모든 기능도 작동합니다.

저는 포스트그레스를 사용합니다.

감사해요!

도움이 되었습니까?

해결책

당신은 사용하고 있습니다 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, 하지만 확실하지 않다고 말했듯이 나에게도 혼란스러워 보입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top