Slick 2.0和IntelliJ,突出显示错误

时间:2013-12-30 21:33:32

标签: scala slick

我正在迁移到Slick 2.0.0-RC1(来自1.x),我无法让IntelliJ识别TableQuery语句周围的嵌入式隐含。但是,所有在IntelliJ和sbt中编译(读取:播放)。我开始利用新的代码生成功能,刚才我逐字地从光滑的例子中抓取了片段 - 两者都产生了相同的行为。

使用提升嵌入的第一个示例(https://github.com/slick/slick-examples/blob/master/src/main/scala/com/typesafe/slick/examples/lifted/FirstExample.scala),会发生以下两件事:

  • 该行:

    def supplier = foreignKey("SUP_FK", supID, suppliers)(_.id)
    

    suppliers Type mismatch, expected: TableQuery[NotInferredTT], actual: ((Tag) => FirstExample.Suppliers) => TableQuery[FirstExample.Suppliers]

  • 会产生错误
  • TableQuery[...] vals(例如,咖啡)对它们没有任何类似的集合操作(​​例如,过滤器,地图,拍摄等)。

    < / LI>

奇怪的是,使用for-comprehension不会产生任何错误,但是没有正确的类型信息(最终为Any)。

我很肯定我已经获得.simple._导入(如果没有它,它就不能在其他地方编译)。我已经清除了所有的缓存,重新运行了我的创意,完成了完全重建等,没有任何进展。我使用Scala 0.22.302插件运行IntelliJ 12.1.6 Ultimate。我自己的项目使用SQLServer,但我尝试了H2的例子并经历了同样的事情。

有人能指出我正确的方向吗?

2 个答案:

答案 0 :(得分:0)

我找到了一个解决这个问题的黑客,但我真的在寻找更强大的东西。如果我覆盖SourceCodeGenerator,然后覆盖其中的TableDef,然后覆盖其中的TableValueDef,我可以覆盖其中的def code

override def code = s"lazy val $name = TableQuery[${TableClass.name}](tag => new ${TableClass.name}(tag))"

...然后我没有对宏进行评估的问题。不言而喻,这不是一个理想的解决方案。

答案 1 :(得分:0)

我认为这只是抑制错误,但直接在函数中调用它对我有用:

foreignKey("SUP_FK", supID, TableQuery[Suppliers])