es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El error es: slick.model.Table no acepta parámetros de tipo.

Estoy migrando de slick-extenstions a slick 3.2.0

import slick.lifted.{ProvenShape, Tag}
import slick.model.Table

<p>class Admin(tag : Tag) extends Table[(Long, Long)](tag, "NT<em>CV</em>ADMIN_SHORT") {
  def parentId = column<a href=""PARENT_ID"">Long</a>
  def maxAdminShort = column<a href=""MAX_ADMIN_SHORT"">Long</a></p>

<p>override def * : ProvenShape[(Long, Long)] = (parentId, maxAdminShort)
}

Por la declaración de la tabla anterior estoy recibiendo el siguiente error:
error: slick.model.Table no acepta parámetros de tipo

Aquí está la dependencia que utilicé –

<dependency>
<groupId>com.typesafe.slick</groupId>
<artifactId>slick_2.12</artifactId>
<version>3.2.0</version>
</dependency>

No entiendo lo que me falta. Vi el manual de slick3.2.0 – https://scala-slick.org/doc/3.2.0/gettingstarted.html así es como he creado la tabla.
No sé si me falta algo.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El problema parece ser que estás usando la clase slick.model.Table en lugar del rasgo slick.relational.RelationalProfile#Table en tu código. La clase slick.model.Table no toma parámetros de tipo, de ahí el error que estás obteniendo.

    Para solucionar el problema, debes reemplazar la declaración de importación para Table con la siguiente:

    import slick.jdbc.PostgresProfile.api.Table
    

    Esto importará el rasgo Table desde el paquete slick.jdbc.PostgresProfile.api, que extiende el rasgo slick.relational.RelationalProfile y es compatible con la API de Slick 3.x.

    Tu código actualizado debería verse así:

    import slick.lifted.{ProvenShape, Tag}
    import slick.jdbc.PostgresProfile.api.Table
    
    class Admin(tag: Tag) extends Table[(Long, Long)](tag, "NT_CV_ADMIN_SHORT") {
      def parentId: Rep[Long] = column[Long]("PARENT_ID")
      def maxAdminShort: Rep[Long] = column[Long]("MAX_ADMIN_SHORT")
    
      override def * : ProvenShape[(Long, Long)] = (parentId, maxAdminShort)
    }
    

    Ten en cuenta que también hice un pequeño cambio a los métodos parentId y maxAdminShort para declarar explícitamente el tipo del Rep devuelto (lo que es necesario en Slick 3.x).

Comments are closed.