我已经想出了创建一个Postgres表,我需要有这个导入行
import slick.driver.PostgresDriver.simple._
但是,当我查看Simple Scaladoc时,我找不到ddl
的方法,我找错了地方吗?这对我来说是一次练习Scaladocs的练习。我可以看到TableQuery
有别名,但我没有看到添加任何额外的方法。
TLDR:Slick 2.1.0的scala文档中定义的ddl
方法在哪里?
答案 0 :(得分:0)
方法 ddl 的定义包含在类TableQueryExtensionMethods和Sequence的说明中。例如,可以通过Scaladoc的index找到它。
为什么这有意义?
考虑以下代码让我自己困惑了一段时间:
import scala.slick.driver.H2Driver.simple._
// [..]
val dict = TableQuery[Dict]
// [..]
// Create the dictionary table and insert some data
dict.ddl.create
首先,请注意给定示例中的导入与问题中的导入非常相似。我只是使用不同的数据库。
方法 ddl 应用于TableQuery[Dict]
类型的值,尽管类TableQuery显然不包含此方法。
相反,显示类TableQueryExtensionMethods包含此方法。
类 TableQueryExtensionMethods 的implementation表明Slick的开发人员使用隐式转换 > TableQuery 到 TableQueryExtensionMethods :
implicit def tableQueryToTableQueryExtensionMethods [T <: Table[_], U](q: Query[T, U, Seq] with TableQuery[T])
= new TableQueryExtensionMethods[T, U](q)
这允许执行行
dict.ddl.create
从上面的例子中可以看出。