我现在正在用光滑做我的第一步。我对码元特别感兴趣。为了开始工作,我安装了Typesafe Activator (激活剂-dist-1.3.7),启动了Activator ui,从模板中创建了一个新项目“使用from缺省代码生成器”(slick示例)并启动了它。
这非常成功,并且确实生成了源代码。在打开Build.scala时,我注意到引用的版本非常过时(例如,从2013年开始使用Scala2.10.3)。因此,我检查了当前的版本,并替换了
scalaVersion := "2.10.3",
libraryDependencies ++= List(
"com.typesafe.slick" %% "slick" % "2.1.0",
"com.typesafe.slick" %% "slick-codegen" % "2.1.0-RC3",
"org.slf4j" % "slf4j-nop" % "1.6.4",
"com.h2database" % "h2" % "1.3.170"
),在Build.scala中
scalaVersion := "2.11.7",
libraryDependencies ++= List(
"com.typesafe.slick" %% "slick" % "3.1.1",
"com.typesafe.slick" %% "slick-codegen" % "3.1.1",
"org.slf4j" % "slf4j-nop" % "1.7.13",
"com.h2database" % "h2" % "1.4.190"
),然后,我还更新了包名(Alex:谢谢您的提示!)来建造这座建筑。我还在create代码中添加了“如果现在存在”,因为出于某种未知的原因,数据库抱怨这些表已经存在。
因此,最终创建了Tables.scala :)但是,使用示例查询运行Example.scala不会输出任何内容。经过一些研究,我了解到这是因为Slick 3现在异步工作。在其他一些例子中,如果已经看到db.run被包装在Await.result中。因此,我尝试了这一点,这会导致编译错误:
value groupBy is not a member of (String, String)哪里出了问题?我怎么才能修好它?查询代码现在如下所示:
val q = Companies.join(Computers).on(_.id === _.manufacturerId).map {
case (co,cp) => (co.name, cp.name) }
Await.result(db.run(q.result), Duration.Inf).foreach { result =>
println(result.groupBy{ case (co,cp) => co }
.mapValues(_.map{ case (co,cp) => cp })
.mkString("\n")
)
}发布于 2015-12-18 08:02:20
)除了更改版本号(请参阅上文)之外,我还必须:
发布于 2015-12-17 08:17:52
Sleick3.0的封装结构是变化。您需要使用slick.codegen.SourceCodeGenerator而不是scala.slick.codegen.SourceCodeGenerator
https://stackoverflow.com/questions/34329449
复制相似问题