0

我正在尝试使用 scalikejdbc(试图从 Slick 迁移),并且我坚持从实体创建我的模式(阅读:案例类)。

// example Slick equivalent

case class X(id: Int, ...)

class XTable(tag: Tag) extends Table[X] (tag, "x") {
  def id = column[Int]("id")
  ... //more columns

  def * = (id, ...) <> (X.tupled, X.unapply)
}

val xTable = TableQuery[XTable]

db.run(xtable.schema.create) //creates in the DB a table named "x", with "id" and all other columns

似乎使用 SQLSyntaxSupport 可能是朝着正确方向迈出的一步,例如

// scalikejdbc

case class X (id: Int, ...)

object X extends SQLSyntaxSupport[X] {
  def apply (x: ResultName[X])(rs: WrappedResultSet): X = new X(id = rs.get(x.id, ...))
}

X.table.??? // what to do now?

但无法弄清楚下一步。

我正在寻找的是与[逆向工程]中描述的工具相反的东西:http: //scalikejdbc.org/documentation/reverse-engineering.html

任何帮助/想法,特别是文档相关部分的说明,将不胜感激

4

1 回答 1

0

您可以使用 statements 方法获取 SQL 代码,就像大多数其他基于 SQL 的操作一样。Schema Actions 是目前唯一可以产生多个语句的 Actions。

schema.create.statements.foreach(println)
schema.drop.statements.foreach(println)

http://slick.typesafe.com/doc/3.0.0/schemas.html

于 2016-04-26T07:05:53.107 回答