Slick 3 многоразового универсального хранилища

У меня возникают проблемы с использованием TableQuery Слика в общем виде.

Соблюдайте обычную ситуацию:

class AccountRepository {
override protected val dbConfig = DatabaseConfigProvider.get[JdbcProfile](Play.current)
val accounts = TableQuery[Accounts]
def all = db.run(accounts.result)
...

Идея состояла бы в том, чтобы извлечь все возможное в общий признак или абстрактный класс, чтобы избежать повторения. Ради простоты я включил только проблемный код.

abstract class GenericRepository[T] extends HasDatabaseConfig[JdbcProfile] {
override protected val dbConfig = DatabaseConfigProvider.get[JdbcProfile(Play.current)
val table = TableQuery[T]
}

И использовать это как:

class AccountRepository extends GenericRepository[Accounts] {

Однако это создает ошибку компиляции:

Аргументы типа [T] не соответствуют границам ни одной из перегруженных альтернатив значения value: [E <: slick.lifted.AbstractTable []] => slick.lifted.TableQuery [E] [E <: slick.lifted.AbstractTable []] (cons: slick.lifted.Tag => E) slick.lifted.TableQuery [E]

Попытка решить проблему, установив границу, также не помогает.

abstract class GenericRepository[T <: slick.lifted.AbstractTable[T]] extends HasDatabaseConfig[JdbcProfile] {

Однако в результате мы получаем другую ошибку:

тип класса требуется, но T найдено

в следующем месте:

val table = TableQuery[T]

Есть идеи по поводу решения?

Ответы на вопрос(2)

Ваш ответ на вопрос