سؤال

عند حذف من كائن تابليكيري يجب أن أكون قادرا على الكتابة:

FacebookAuths.delete

لكنها تشكو من أن الحذف ليس طريقة في تابلكيري ، حتى لو حاولت:

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

لا يزال يقول أن الحذف ليس طريقة ، ولكن الآن على كائن الاستعلام.

ماذا أفعل خطأ?وارداتي هي:

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

وجميع الأشياء الأخرى مثل فيرستوبتيون يعمل.

يمكنني استخدام بوستغرس.

شكراً!

هل كانت مفيدة؟

المحلول

أنت تستخدم 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