使用 SQLServer 和 dbo Schema 的 Slick Codegen
Slick Codegen With SQLServer and dbo Schema
我正在尝试使用 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 模式,但在代码生成调用中的任何地方都没有指定该模式(所有表都命名为 "dbo..TableName")。
所以我的问题是:我是否需要在 codegen 配置中的某处指定 'dbo'?如果需要,如何指定?
如果答案是不需要做任何事情,那么我该如何调试 codegen 显然失败但没有产生错误的事实?
提前感谢您的考虑和回复。
虽然对于直接连接,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"
我正在尝试使用 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 模式,但在代码生成调用中的任何地方都没有指定该模式(所有表都命名为 "dbo..TableName")。
所以我的问题是:我是否需要在 codegen 配置中的某处指定 'dbo'?如果需要,如何指定?
如果答案是不需要做任何事情,那么我该如何调试 codegen 显然失败但没有产生错误的事实?
提前感谢您的考虑和回复。
虽然对于直接连接,com.microsoft 驱动程序确实有效,但我发现对于代码生成,您需要传入带有 $.
的灵活 jdbc SQLServerProfileArray("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"