Slick 3 repositorio genérico reutilizable

Tengo problemas para hacer que Slick's TableQuery se use de manera genérica.

Observe la situación regular:

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

La idea sería extraer todo lo posible en un rasgo genérico o una clase abstracta para evitar la repetición. En aras de la simplicidad, incluí solo el código problemático.

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

Y para usarlo como:

class AccountRepository extends GenericRepository[Accounts] {

Sin embargo, eso crea un error de compilación:

los argumentos de tipo [T] se ajustan a los límites de ninguna de las alternativas de valor sobrecargadas que se aplican: [E <: slick.lifted.AbstractTable []] => slick.lifted.TableQuery [E] [E <: slick.lifted.AbstractTable []] (contras: slick.lifted.Tag => E) slick.lifted.TableQuery [E]

Intentar solucionar el problema estableciendo un límite tampoco ayuda.

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

Sin embargo, terminamos con un error diferente:

tipo de clase requerido pero T encontrado

en el siguiente lugar:

val table = TableQuery[T]

¿Alguna idea sobre la solución?

Respuestas a la pregunta(2)

Su respuesta a la pregunta