slick.driver.H2Driver.api.Table 的类型参数数量错误,应该是 1
wrong number of type arguments for slick.driver.H2Driver.api.Table, should be 1
使用 Play 框架 2.4.3 和 Slick 3.1
我有以下型号:
package models
import slick.driver.H2Driver.simple._
import slick.driver.H2Driver.api.Table
import slick.lifted.Tag
case class Subject(name: String, description: String)
/* Table mapping
*/
class SubjectsTable(tag: Tag) extends Table[Subject](tag, "SUBJECT") {
def name = column[String]("name", O.PrimaryKey)
def description = column[String]("description", O.NotNull)
def * = (name, description) <>(Subject.tupled, Subject.unapply _)
}
我收到一大堆错误,这些错误还不清楚。错误的数量清楚地表明我使用过时的教程从(我的 Manning Play for Scala 书中也没有涵盖这个......)复制我的模型 class 的结构,或者只是错误的导入......我可以在网上找到任何关于将 Slick 与 Play Framework 结合使用的可靠教程,这真的是 Play 必须提供的全部吗?
[error] /app/models/Subject.scala:3: value simple is not a member of object slick.driver.H2Driver
[error] import slick.driver.H2Driver.simple._
[error] ^
[error] /app/controllers/Subjects.scala:25: type arguments [controllers.Subjects] conform to the bounds of none of the overloaded alternatives of
[error] value apply: [E <: slick.lifted.AbstractTable[_]]=> slick.lifted.TableQuery[E] <and> [E <: slick.lifted.AbstractTable[_]](cons: slick.lifted.Tag => E)slick.lifted.TableQuery[E]
[error] val subjects: TableQuery[Subjects] = TableQuery[Subjects]
[error] ^
[error] /app/controllers/Subjects.scala:34: value all is not a member of slick.lifted.TableQuery[controllers.Subjects]
[error] val allSubjects = dbConfig.db.run(subjects.all())
[error] ^
[error] /app/models/Subject.scala:13: could not find implicit value for parameter tt: slick.ast.TypedType[String]
[error] def name = column[String]("name", O.PrimaryKey)
[error] ^
[error] /app/models/Subject.scala:15: value NotNull is not a member of slick.driver.H2Driver.ColumnOptions
[error] def description = column[String]("description", O.NotNull)
[error] ^
[error] /app/models/Subject.scala:15: could not find implicit value for parameter tt: slick.ast.TypedType[String]
[error] def description = column[String]("description", O.NotNull)
[error] ^
[error] /app/tables/Subjects.scala:7: wrong number of type arguments for slick.driver.H2Driver.api.Table, should be 1
[error] class Subjects(tag: Tag) extends Table[String, String](tag, "SUBJECTS") {
我尝试使用教程中的文件 here
如果我的问题太宽泛,也可以使用 link 教程或 Github 项目。我就是无法开始开发这样一个合理的应用程序。 (请不要参考 Play Framework 文档,他们没有提供任何相关信息)
在你的 build.sbt
添加为依赖项
"com.h2database" % "h2" % "1.4.190"
然后只导入
import slick.driver.H2Driver.api._
import slick.lifted.Tag
您使用的示例似乎已过时。该示例所属的 activator-play-slick project 适用于 Play 2.3 和 Slick 0.7.0。
slick.driver.H2Driver.simple._
API 在 Slick 的早期版本中已被弃用,现在已被完全删除。相反,您应该使用:
import slick.driver.H2Driver.api._
import slick.lifted.Tag
此外,选项 O.NotNull
也已从 Slick 3.1 中删除。并且会导致编译错误。相反,您只需使用已有的非 Option 类型即可指定 not null。例如:
def stringCol = column[String]("string_col")
对于可为 null 的字段,您将类型包装在一个选项中,因此可为 null 的字符串类似于:
def nullableStringCol = column[Option[String]]("nullable_string_col")
您可以在最新的 slick 文档 here 中找到更多有关如何指定的更新示例。这比 Play 文档中包含的内容更全面。
使用 Play 框架 2.4.3 和 Slick 3.1
我有以下型号:
package models
import slick.driver.H2Driver.simple._
import slick.driver.H2Driver.api.Table
import slick.lifted.Tag
case class Subject(name: String, description: String)
/* Table mapping
*/
class SubjectsTable(tag: Tag) extends Table[Subject](tag, "SUBJECT") {
def name = column[String]("name", O.PrimaryKey)
def description = column[String]("description", O.NotNull)
def * = (name, description) <>(Subject.tupled, Subject.unapply _)
}
我收到一大堆错误,这些错误还不清楚。错误的数量清楚地表明我使用过时的教程从(我的 Manning Play for Scala 书中也没有涵盖这个......)复制我的模型 class 的结构,或者只是错误的导入......我可以在网上找到任何关于将 Slick 与 Play Framework 结合使用的可靠教程,这真的是 Play 必须提供的全部吗?
[error] /app/models/Subject.scala:3: value simple is not a member of object slick.driver.H2Driver
[error] import slick.driver.H2Driver.simple._
[error] ^
[error] /app/controllers/Subjects.scala:25: type arguments [controllers.Subjects] conform to the bounds of none of the overloaded alternatives of
[error] value apply: [E <: slick.lifted.AbstractTable[_]]=> slick.lifted.TableQuery[E] <and> [E <: slick.lifted.AbstractTable[_]](cons: slick.lifted.Tag => E)slick.lifted.TableQuery[E]
[error] val subjects: TableQuery[Subjects] = TableQuery[Subjects]
[error] ^
[error] /app/controllers/Subjects.scala:34: value all is not a member of slick.lifted.TableQuery[controllers.Subjects]
[error] val allSubjects = dbConfig.db.run(subjects.all())
[error] ^
[error] /app/models/Subject.scala:13: could not find implicit value for parameter tt: slick.ast.TypedType[String]
[error] def name = column[String]("name", O.PrimaryKey)
[error] ^
[error] /app/models/Subject.scala:15: value NotNull is not a member of slick.driver.H2Driver.ColumnOptions
[error] def description = column[String]("description", O.NotNull)
[error] ^
[error] /app/models/Subject.scala:15: could not find implicit value for parameter tt: slick.ast.TypedType[String]
[error] def description = column[String]("description", O.NotNull)
[error] ^
[error] /app/tables/Subjects.scala:7: wrong number of type arguments for slick.driver.H2Driver.api.Table, should be 1
[error] class Subjects(tag: Tag) extends Table[String, String](tag, "SUBJECTS") {
我尝试使用教程中的文件 here
如果我的问题太宽泛,也可以使用 link 教程或 Github 项目。我就是无法开始开发这样一个合理的应用程序。 (请不要参考 Play Framework 文档,他们没有提供任何相关信息)
在你的 build.sbt
添加为依赖项
"com.h2database" % "h2" % "1.4.190"
然后只导入
import slick.driver.H2Driver.api._
import slick.lifted.Tag
您使用的示例似乎已过时。该示例所属的 activator-play-slick project 适用于 Play 2.3 和 Slick 0.7.0。
slick.driver.H2Driver.simple._
API 在 Slick 的早期版本中已被弃用,现在已被完全删除。相反,您应该使用:
import slick.driver.H2Driver.api._
import slick.lifted.Tag
此外,选项 O.NotNull
也已从 Slick 3.1 中删除。并且会导致编译错误。相反,您只需使用已有的非 Option 类型即可指定 not null。例如:
def stringCol = column[String]("string_col")
对于可为 null 的字段,您将类型包装在一个选项中,因此可为 null 的字符串类似于:
def nullableStringCol = column[Option[String]]("nullable_string_col")
您可以在最新的 slick 文档 here 中找到更多有关如何指定的更新示例。这比 Play 文档中包含的内容更全面。