Slick Codegen使用SQLServer和dbo Schema

时间:2017-02-23 20:24:36

标签: scala slick slick-codegen

我正在尝试使用slick codegen基于SQLServer中的现有数据创建一个Tables.scala文件,其中包含以下设置:

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&#34 ;)

所以我的问题是:我是否需要指定' dbo'在codegen配置的某个地方,如果是,如何?

如果答案是没有什么需要做,那么如何调试codegen明显失败但没有产生错误的事实?

提前感谢您的考虑和回应。

1 个答案:

答案 0 :(得分: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驱动程序添加到库中,并使用jtds样式的url:

"jdbc:jtds:sqlserver://myserver.com:1433;applicationName=TestCodeGen;integratedSecurity=true;authenticationScheme=NativeAuthentication;databaseName=MYDB"

你的jtds依赖关系会是这样的:

libraryDependencies += "net.sourceforge.jtds" % "jtds" % "1.3.1"