Slick Codegen с помощью схемы SQLServer и dbo
Я пытаюсь использовать гладкий codegen для создания файла Tables.scala на основе существующих данных в SQLServer со следующими настройками:
slick.codegen.SourceCodeGenerator.main(Array("slick.jdbc.SQLServerProfile",
"com.microsoft.sqlserver.jdbc.SQLServerDriver",
"jdbc:sqlserver://myserver.com:1433;applicationName=TestCodeGen;integratedSecurity=true;authenticationScheme=NativeAuthentication;databaseName=MYDB",
"src/main/scala/",
"com.mypackage",
"myUserId",
""))
Когда я запускаю команду, я не получаю ошибок, но создается пустой файл Tables.scala (в базе данных есть десятки таблиц):
package com.mypackage
// AUTO-GENERATED Slick data model
/** Stand-alone Slick data model for immediate use */
object Tables extends {
val profile = slick.jdbc.SQLServerProfile
} with Tables
/** Slick data model trait for extension, choice of backend or usage in the cake pattern. (Make sure to initialize this late.) */
trait Tables {
val profile: slick.jdbc.JdbcProfile
import profile.api._
import slick.model.ForeignKeyAction
/** DDL for all tables. Call .create to execute. */
lazy val schema: profile.SchemaDescription = profile.DDL(Nil, Nil)
@deprecated("Use .schema instead of .ddl", "3.0")
def ddl = schema
}
Я подозреваю, что существует проблема с тем фактом, что SQLServer использует схему dbo, но эта схема не указана где-либо в вызове codegen (все таблицы называются "dbo..TableName").
Итак, мой вопрос: мне нужно указать "dbo" где-то в конфигурации codegen и если да, то как?
Если ответ таков, что ничего не нужно делать, то как отладить тот факт, что codegen явно не работает, но не выдает ошибок?
Заранее благодарю за внимание и ответ.
1 ответ
Хотя для прямого подключения драйвер com.microsoft работает, я обнаружил, что для генерации кода вам нужно передать гладкий jdbc SQLServerProfile с символом $.
Array("slick.jdbc.SQLServerProfile",
"slick.jdbc.SQLServerProfile$",
"jdbc:sqlserver://myserver.com:1433;applicationName=TestCodeGen;integratedSecurity=true;authenticationScheme=NativeAuthentication;databaseName=MYDB",
"src/main/scala/",
"com.mypackage",
"myUserId",
"")
Если это не сработает, попробуйте также добавить драйвер jtds в свою библиотеку и использовать URL в стиле jtds:
"jdbc:jtds:sqlserver://myserver.com:1433;applicationName=TestCodeGen;integratedSecurity=true;authenticationScheme=NativeAuthentication;databaseName=MYDB"
Где ваша зависимость от jtds будет выглядеть так:
libraryDependencies += "net.sourceforge.jtds" % "jtds" % "1.3.1"