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 явно дает сбой, но не выдает ошибок?

Заранее благодарю за внимание и ответ.


person Ramón J Romero y Vigil    schedule 23.02.2017    source источник


Ответы (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"
person Morrob    schedule 23.03.2017