【问题标题】:IntelliJ Unable to Compile Scala Slick CaseClassShapeIntelliJ 无法编译 Scala Slick CaseClassShape
【发布时间】:2021-04-02 15:36:27
【问题描述】:

我正在尝试创建一个映射到简单案例类的 Slick 表定义。按照here 的说明,我想出了(复制)以下代码。

    case class User(id: Int, name: String, email: String, phone: String)
    case class LiftedUser(id: Rep[Int], name: Rep[String], email: Rep[String], phone: Rep[String])
    implicit object UserShape extends CaseClassShape(LiftedUser.tupled, User.tupled)

当我运行sbt compile 时,项目编译正常。但是,IntelliJ 给了我一个错误:

Type mismatch. Required: LiftedTuple => LiftedCaseClass, found: ((Rep[Int], Rep[String], Rep[String], Rep[String])) => LiftedUser

我想从宏观上来说,这不是什么大不了的事,但它相当烦人。这是编译器设置还是我需要调整的那些方面?

  • IntelliJ IDEA 2020.3
  • Scala 插件 2020.3.18
  • 采用 OpenJDK 15
  • scala 2.13.3
  • 光滑的 3.3.3

【问题讨论】:

    标签: scala intellij-idea slick


    【解决方案1】:

    你用过code-generation吗?
    很难手动创建映射到表的类。

    或者,您可以使用PlainSQL syntax,如下所示。

    // Case classes for our data
    case class Supplier(id: Int, name: String, street: String, city: String, state: String, zip: String)
    case class Coffee(name: String, supID: Int, price: Double, sales: Int, total: Int)
    
    // Result set getters
    implicit val getSupplierResult = GetResult(r => Supplier(r.nextInt, r.nextString, r.nextString,
      r.nextString, r.nextString, r.nextString))
    implicit val getCoffeeResult = GetResult(r => Coffee(r.<<, r.<<, r.<<, r.<<, r.<<))
    

    【讨论】:

    • 对不起,我想我一开始没有正确创建链接,经过编辑修复。这转到了显示我从哪里获得此语法的 slick doc。但是不,我还没有尝试过代码生成。同样,它使用 sbt 编译得很好,但 IntelliJ 无法理解它。
    • 我想在我的本地机器上用 IntelliJ 打开项目。您可以将项目上传到 github 或我可以重现问题的地方吗?
    • 当然,这是一个最小的复制:github.com/anqit/repro-65433996
    • 这似乎是类型提示中的一个错误,可能在 IntelliJ 或 Scala-plugin 中。即使它看起来像一个错误,也没有执行问题,所以我想你必须忽略它。而且,在 Slick 问题中也存在类型推断错误,该问题将在 FUTURE 中解决...github.com/slick/slick/issues/1541
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 2018-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多