2017-12-10 3 views
0

Ich bekomme eine Ausnahme, wenn ich versuche, mein eigenes Profil mit Slick zu verwenden. Der Grund, warum ich es verwenden möchte, ist, weil ich JSON in meiner postgresql-Datenbank behalten möchte. Daher benutze ich pg-slick. Die Ausnahme lautet: slick.jdbc.PostgresProfile $ kann nicht in util.ExtendedPostgresProfile umgewandelt werden.Erhalte Ausführung Ausnahme für benutzerdefinierte Slick-Profil

Dies ist mein Code für die ExtendedPostgresProfile:

package util 

import com.github.tminglei.slickpg._ 

trait ExtendedPostgresProfile extends ExPostgresProfile with PgPlayJsonSupport { 

    override val api = new API with PlayJsonImplicits 

    override def pgjson: String = "jsonb" 
} 

object ExtendedPostgresProfile extends ExtendedPostgresProfile 

Das ist mein DAO Klasse:

class ActivityDAO @Inject()(dbConfigProvider: DatabaseConfigProvider)(implicit ec: ExecutionContext) { 

    private val dbConfig = dbConfigProvider.get[ExtendedPostgresProfile] 

    import dbConfig._ 
    import profile.api._ 

    private class ActivityTable(tag: Tag) extends Table[Activity](tag, "activity") { 

     def id: Rep[Long] = column[Long]("id", O.PrimaryKey, O.AutoInc) 

     def activity: Rep[JsValue] = column[JsValue]("activity") 

     def atTime: Rep[Timestamp] = column[Timestamp]("at_time") 

     def activityTypeId: Rep[Int] = column[Int]("activiry_type_id") 

     def userId: Rep[Long] = column[Long]("user_id") 

     override def * : ProvenShape[Activity] = 
      (id.?, activity, atTime.?, activityTypeId, userId.?) <> ((Activity.apply _).tupled, Activity.unapply) 
    } 

    private val activities = TableQuery[ActivityTable] 

    def add(activity: Activity): Future[Long] = { 

     val query = activities returning activities.map(_.id) 

     db.run(query += activity) 
    } 

    def filter(userId: Long): Future[Seq[Activity]] = { 

     db.run(activities.filter(_.userId === userId).result) 
    } 
} 

Ich habe nach der Antwort versucht die Suche mich selbst, haben aber nicht viel Glück gehabt .

Antwort

1

Ist Ihr benutzerdefiniertes Profil in Ihrer Play-Slick-Konfiguration konfiguriert, wie im Abschnitt Database Configuration vorgeschlagen? I.e. ist es util.ExtendedPostgresProfile$ oder ist es slick.jdbc.PostgresProfile$?

+0

In meiner application.conf ist es mit slick.jdbc.PostgresProfile eingerichtet. Das Speichern in der Tabelle funktioniert jedoch nicht, auch nicht für andere DAOs, die meine benutzerdefinierte Klasse – Marin

+1

@Marin nicht verwenden. Ich möchte damit sagen, dass Ihre Ausnahme besagt, dass "_slick.jdbc.PostgresProfile $ nicht in util umgewandelt werden kann. ExtendedPostgresProfile_ ", was darauf zurückzuführen ist, dass Sie Ihr Profil auf diese Weise konfiguriert haben. Ich erwarte, dass wenn Sie Ihre Konfiguration zu 'util.ExtendedPostgresProfile 'ändern - sollte es anfangen zu arbeiten. – SergGr

Verwandte Themen