Я пытаюсь создать Slick 3.1.1 Generic DAO для моей модной модели с кодом. Тем не менее, я столкнулся с одной последней ошибкой компиляции, которая не может найти, как исправить.Slick 3.1.x Generic DAO для ошибки JdbcProfile «значение id не является членом ...»
Весь проект доступен в GitHub play-authenticate-usage-scala, а соответствующий исходный код находится в GenericDao.scala.
Ошибка компилятора заключается в следующем:
[info] Compiling 16 Scala sources and 1 Java source to /home/bravegag/code/play-authenticate-usage-scala/target/scala-2.11/classes...
[error] /home/bravegag/code/play-authenticate-usage-scala/app/dao/GenericDao.scala:46: value id is not a member of type parameter ET
[error] def findById(id: PK): Future[Option[ER]] = db.run(tableQuery.filter(_.id === id).result.headOption)
[error] ^
В основном это не признает id
определение под Identifyable
признака. Верхние декларации являются следующими:
trait Identifyable[PK] extends Product {
def id : PK
}
trait GenericDaoHelper {
val profile: slick.driver.JdbcProfile
import profile.api._
class GenericDao[PK, ER <: Identifyable[PK], ET <: Table[ER], TQ <: TableQuery[ET]] @Inject()(protected val dbConfigProvider: DatabaseConfigProvider)
(tableQuery: TQ) extends HasDatabaseConfigProvider[JdbcProfile] {
import driver.api._
/**
* Returns the matching entity for the given id
* @param id identifier
* @return the matching entity for the given id
*/
def findById(id: PK): Future[Option[ER]] = db.run(tableQuery.filter(_.id === id).result.headOption)
}
PS: обратите внимание, что я работаю с последней Slick 3.1.1 это имеет решающее значение, потому что люди реализовали подобные решения в прошлом, но они изменяются совсем немного от версии к версия.
Вторая ссылка («окончательное решение») сломана. Не могли бы вы сделать его доступным на GitHub, если бы вам удалось клонировать его вовремя? – JulienD
Upvote заранее: D –
+1 уже мой ( – JulienD