Вы можете переопределить def createModelBuilder
в вашем JdbcProfile
.PostgresProfile
, включенный в slick, уже делает это, чтобы удалить схему из определения сгенерированной таблицы, если == "public"
.
https://github.com/slick/slick/blob/14db18d7974ade35bf6d6dbc97bfe6e0490807c8/slick/src/main/scala/slick/jdbc/PostgresProfile.scala
trait PostgresProfile extends JdbcProfile {
// line 61
class ModelBuilder(mTables: Seq[MTable], ignoreInvalidDefaults: Boolean)(implicit ec: ExecutionContext) extends JdbcModelBuilder(mTables, ignoreInvalidDefaults) {
override def createTableNamer(mTable: MTable): TableNamer = new TableNamer(mTable) {
override def schema = super.schema.filter(_ != "public") // remove default schema
}
}
// line 139
override def createModelBuilder(tables: Seq[MTable], ignoreInvalidDefaults: Boolean)(implicit ec: ExecutionContext): JdbcModelBuilder =
new ModelBuilder(tables, ignoreInvalidDefaults)
}
Вы должны быть в состоянии что-то сделатьаналогично в пользовательском профиле
trait NoSchemaProfile extends MyDatabaseProfile {
class NoSchemaModelBuilder(mTables: Seq[MTable], ignoreInvalidDefaults: Boolean)(implicit ec: ExecutionContext) extends super.ModelBuilder(mTables, ignoreInvalidDefaults) {
override def createTableNamer(mTable: MTable): TableNamer = new TableNamer(mTable) {
override def schema = Option.empty[String]
}
}
override def createModelBuilder(tables: Seq[MTable], ignoreInvalidDefaults: Boolean)(implicit ec: ExecutionContext): JdbcModelBuilder =
new NoSchemaModelBuilder(tables, ignoreInvalidDefaults)
}
}
, а затем укажите пользовательский профиль при генерации кода