【发布时间】:2015-12-21 18:40:16
【问题描述】:
我正在尝试使用 Slick 3.0.3 为我的架构中的数据库表和视图生成 Scala 代码。以this blog 为例,我有以下文件build.sbt。但是,这将为我的数据库表生成代码,并且不会包含数据库视图。我怎样才能获得生成的视图?
根据slick issue 1022,我认为可以这样做,但 API 看起来不一样,而且slick.codegen.SourceCodeGenerator 没有 getTables 或 defaultTables 来包含视图名称。
name := "slickCodeGen"
version := "1.0"
scalaVersion := "2.11.6"
scalacOptions := Seq("-unchecked", "-deprecation", "-encoding", "utf8")
libraryDependencies ++= Seq(
"com.typesafe.slick" %% "slick" % "3.0.3",
"com.typesafe.slick" %% "slick-codegen" % "3.0.3",
"org.postgresql" % "postgresql" % "9.4-1201-jdbc41",
"com.zaxxer" % "HikariCP" % "2.3.2",
"org.scalatest" %% "scalatest" % "2.2.4" % "test"
)
slick <<= slickCodeGenTask
sourceGenerators in Compile <+= slickCodeGenTask
lazy val slick = TaskKey[Seq[File]]("gen-tables")
lazy val slickCodeGenTask = (sourceManaged, dependencyClasspath in Compile, runner in Compile, streams) map { (dir, cp, r, s) =>
val outputDir = (dir / "main/slick").getPath
val username = "postgres"
val password = "xxx"
val url = "jdbc:postgresql://localhost:5555/testdb?searchpath=public"
val jdbcDriver = "com.postgresql.jdbc.Driver"
val slickDriver = "slick.driver.PostgresDriver"
val pkg = "folder1.folder2"
toError(r.run("slick.codegen.SourceCodeGenerator", cp.files, Array(slickDriver, jdbcDriver, url, outputDir, pkg, username, password), s.log))
val fname = outputDir + "/folder1/folder2/" + "Tables.scala"
Seq(file(fname))
}
【问题讨论】:
-
老实说 - 我在包含视图的 Slick 驱动的 DDL 方面没有取得多大成功。我最终在原始 SQL 中指定视图并将它们映射到类。我很想知道你是否会收到任何回复。
标签: scala sbt code-generation slick slick-3.0