Scala Slick 2.0和IntelliJ,突出显示错误
我正在迁移到Slick 2.0.0-RC1(从1.x开始),我很难让IntelliJ识别Scala Slick 2.0和IntelliJ,突出显示错误,scala,slick,Scala,Slick,我正在迁移到Slick 2.0.0-RC1(从1.x开始),我很难让IntelliJ识别TableQuery语句中的隐含信息。然而,在IntelliJ和sbt(读:play)中,一切都是编译的。我从利用新的代码生成功能开始,刚才我从光滑的示例中逐字地抓取了片段——两者都产生相同的行为 使用提升嵌入()的第一个示例,会出现以下两种情况: 该行: def supplier = foreignKey("SUP_FK", supID, suppliers)(_.id) 在供应商上生成错误,表示类型不
TableQuery
语句中的隐含信息。然而,在IntelliJ和sbt(读:play)中,一切都是编译的。我从利用新的代码生成功能开始,刚才我从光滑的示例中逐字地抓取了片段——两者都产生相同的行为
使用提升嵌入()的第一个示例,会出现以下两种情况:
- 该行:
在def supplier = foreignKey("SUP_FK", supID, suppliers)(_.id)
供应商上生成错误,表示
类型不匹配,应为:TableQuery[NotInferredTT],实际:((标记)=>FirstExample.suppliers)=>TableQuery[FirstExample.suppliers]
VAL(如咖啡)上没有任何已取消的收集操作(如筛选、映射、获取等)TableQuery[…]
any
)
我确信我已经得到了.simple.\u
导入(如果没有它,它不会在其他地方编译)。我已经清除了所有的缓存,重新运行我的gen idea,完成了完整的重建,等等,但没有任何进展。我正在使用Scala 0.22.302插件运行IntelliJ 12.1.6 Ultimate。我自己的项目使用SQLServer,但我尝试了H2的例子,也经历了同样的事情
有人能给我指出正确的方向吗?我找到了一个解决方法,但我真的在寻找更强大的东西。如果我覆盖
SourceCodeGenerator
,然后覆盖其中的TableDef
,然后覆盖其中的TableValueDef
,我可以覆盖其中的def code
:
override def code = s"lazy val $name = TableQuery[${TableClass.name}](tag => new ${TableClass.name}(tag))"
…这样我就不会有宏不计算的问题了。不用说,这不是一个理想的解决方案。我认为这只是在抑制错误,而是在为我工作的函数中直接调用它:
foreignKey("SUP_FK", supID, TableQuery[Suppliers])
进一步检查后,看起来宏在IntelliJ中不起作用-如果我显式地为
TableQuery
键入构造函数lambda(例如,val suppliers=TableQuery[suppliers](tag=>new suppliers(tag))
),一切都会按预期开始工作。我在这里做什么蠢事吗?也张贴在这里:Thx。我提交了一份PR,以相应地更改默认代码生成器。