无法使 slick 3.2 Mapped table 示例正常工作

Cannot make slick 3.2 Mapped table example working

我只是想让 "User" 示例正常工作 (http://slick.lightbend.com/doc/3.2.0/schemas.html#mapped-tables),但它无法编译。

因为我的目标是 MySQL,所以我添加了以下导入:

import slick.jdbc.MySQLProfile.Table
import slick.jdbc._
import slick.lifted._

那也没有编译,我遇到了很多错误,比如

Error:(16, 23) could not find implicit value for parameter tt: slick.ast.TypedType[Int]
  def id = column[Int]("id", O.PrimaryKey, O.AutoInc)

在寻找隐式函数后,我将 with MySQLProfile.ImplicitColumnTypes 添加到 Users class 扩展 Table:

class Users(tag: Tag) extends Table[User](tag, "users") with MySQLProfile.ImplicitColumnTypes

现在我被

困住了
Error:(19, 15) value ? is not a member of slick.lifted.Rep[Int]
  def * = (id.?, first, last) <> (User.tupled, User.unapply _)

<>也没有找到。

您可能会注意到 User.unapply _ 而不是文档中所述的 User.unapply;但是编译器抱怨 User.unapply

我做错了什么?为什么文档这么不清楚?

代码导入 slick.jdbc.MySQLProfile.Table 但它需要引入整个 api:

import slick.jdbc.MySQLProfile.api._

这将为您提供您正在寻找的暗示,代码应该可以编译。


顺便说一句:Slick 示例已编译

顺便编译了Slick手册的例子。这意味着您可以查看代码以查看是否有您需要的额外详细信息。

例如,对于您 link 进入的页面,如果您滚动到顶部,则会出现 "Edit this page on github" link。单击它会将您带到 the source,您会在其中找到对 Scala 源代码的引用:

.. includecode:: code/LiftedEmbedding.scala#mappedtable

...并且该文件也在 GitHub 中:LiftedEmbedding.scala

有点啰嗦,但有时知道示例已编译并且您可以找到它们很有用。

关于如何发生的细节即将更改为不同的系统,但原则应该保持不变。上面的详细信息(文件名、导入语法)会有所不同。