Pregunta

al eliminar de mi objeto tablequery debería poder escribir:

FacebookAuths.delete

Pero se queja de que eliminar no es un método en TableQuery, incluso si lo intento:

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

Todavía dice que eliminar no es un método, pero ahora en el objeto Consulta.

¿Qué estoy haciendo mal?Mis importaciones son:

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

Y todas las demás cosas como firstOption funcionan.

Yo uso postgres.

¡Gracias!

¿Fue útil?

Solución

Tu estas usando Postgres, entonces necesitas import scala.slick.driver.PostgresDriver.simple._ y scala.slick.driver.PostgresDriver en vez de jdbc unos, lo mismo se aplica a donde se define su esquema.

Editar:

Esto está un poco fuera de mi conocimiento y no estoy 100% seguro, pero lo intentaré.

El PostgresDriver rasgo extiende el JdbcDriver rasgo (de JdbcProfile.scala), esta es la firma del rasgo:

trait PostgresDriver extends JdbcDrive

y a la vez JdbcDriver se extiende SqlDriver:

trait JdbcDriver extends SqlDriver

El firstOption El método pertenece al UnitInvoker rasgo, por lo que no depende de los controladores importados, lo mismo se aplica a list y first y otros métodos, puedes consultarlos en Invoker.scala archivo.El delete método en cambio se define en el DeleteInvoker clase dentro del JdbcInvokerComponent rasgo.

Tengo entendido que al declarar una TableQuery objeto esta es la firma completa:

val table: PostgresDriver.simple.TableQuery[MyTable] = TableQuery[MyTable]

Mientras declaras una tabla con esta firma:

val table: JdbcDriver.simple.TableQuery[MyTable] = TableQuery[MyTable]

No sé por qué el delete El método no está disponible para Jdbc directamente, probablemente tengas que usar Query para eso y luego usar Query.deleteInvoker, pero como dije, no estoy seguro, a mí también me parece confuso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top