使用 slick 3.0.0-RC1 在 TableQuery 上找不到方法结果

Posted

技术标签:

【中文标题】使用 slick 3.0.0-RC1 在 TableQuery 上找不到方法结果【英文标题】:can't find method result on TableQuery with slick 3.0.0-RC1 【发布时间】:2015-04-23 18:17:53 【问题描述】:

我正在试用 Slick 3.0.0-RC1,但遇到了一个奇怪的问题。

这是我的代码:

import slick.driver.SQLiteDriver.api._
import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.Await
import scala.concurrent.duration.Duration

lazy val db = Database.forURL(
  url = "jdbc:sqlite:thebase.db",
  driver = "org.sqlite.JDBC"
)

case class Issue(id: Option[Int], name: String)     

class IssueTable(tag: Tag) extends Table[Issue](tag, "issue")
  def id = column[Int]("issue_id", O.PrimaryKey)
  def name = column[String]("name")
  def * = (id.?, name) <> (Issue.tupled, Issue.unapply _)


val issueQuery = TableQuery[IssueTable]

Await.result(db.run(issueQuery.result), Duration.Inf) // This does not compile

错误是:

“无法解析符号结果”

阅读docs 我真的不明白为什么这会失败。我在这里错过了什么吗?

分辨率

szeiger 指出这可能是“IntelliJ 的演示文稿编译器”中的一个错误,而且这很明显。

【问题讨论】:

这里的“编译”是什么意思? IntelliJ 的演示编译器中存在一个已知错误,导致它无法找到该方法。实际的 Scala 编译器应该能够编译它。 你是对的。我从来没有费心用 sbt 编译,因为 IDEA 给了我一个错误。谢谢! 太糟糕了 IntelliJ 没有得到它。将它用于必须使用 IDE 的大型项目时会破坏一切。这是重点 - 获得编译时间检查和自动完成 对于遇到相同未解决症状“结果”的人的注意事项:您可能(就像我一样)忘记导入 api 对我来说导入 slick.driver.mysqlDriver.api._ 解决了这个问题。 【参考方案1】:

我确实遇到了同样的问题,这是我为摆脱它所做的:

    将 IntelliJ 更新到版本 14.1.3 使用 Scala 插件 1.5 版

我的 scala 版本是 2.11.6

我希望这对可能遇到同样问题的人有所帮助!

【讨论】:

升级到最新的 JetBrain Scala 插件版本 1.5.2 为我解决了这个问题【参考方案2】:

如果有人遇到类似问题:

TableQuery 上没有结果方法

仔细检查你是否有import slick.jdbc.PostgresProfile.api._

【讨论】:

【参考方案3】:

这是我在使用 IntelliJ IDEA 时经常遇到的常见问题。

如果使用 activator,命令 - “activator idea” 帮助我解决了问题。

它重新创建了 .idea 和 IdeaProject.iml 文件,然后重新加载了项目。 我目前使用的是 activator-1.3.4

【讨论】:

【参考方案4】:

你可以试试

val result = db.withSession(implicit session => issueQuery.list)

【讨论】:

以上是关于使用 slick 3.0.0-RC1 在 TableQuery 上找不到方法结果的主要内容,如果未能解决你的问题,请参考以下文章

编译 private.hpp OpenCV 3.0.0-rc1 时出错

如何将数据库模式从Identity 2.2.0迁移到3.0.0-rc1-final

SpringBoot 3.0 要来了,真心强!

Bootstrap 3.0.0 打破了日期选择器图标

OkHttp的使用

Spring Boot 3.0 要来了,真心强!