【问题标题】:Slick 3.0.0 Warning when using Update使用更新时的 Slick 3.0.0 警告
【发布时间】:2015-11-04 15:39:05
【问题描述】:

我有一个简单的更新,它尝试更新特定行的两列。这是我的工作:(我使用的是 Scala 2.11.7)

val update =
  (id: Long, state: MyState) =>
    myTable.filter(_.id === id)
      .map(tbl =>(tbl.name, tbl.updateDate))
      .update(state.name, DateTime.now(DateTimeZone.UTC))

这是我的编译器告诉我的:

[warn] /Users/joe/vpp-projects/app/my/project/services/database/MySchema.scala:40: Adapting argument list by creating a 2-tuple: this may not be what you want.
[warn]         signature: UpdateActionExtensionMethodsImpl.update(value: T): JdbcActionComponent.this.DriverAction[Int,slick.dbio.NoStream,slick.dbio.Effect.Write]
[warn]   given arguments: state.name, DateTime.now(DateTimeZone.UTC)
[warn]  after adaptation: UpdateActionExtensionMethodsImpl.update((state.name, DateTime.now(DateTimeZone.UTC)): (String, org.joda.time.DateTime))
[warn]           .update(state.name, DateTime.now(DateTimeZone.UTC))
[warn]          

    ^

关于这里发生了什么的任何线索?我没有得到警告对我有任何用处,因此我可以摆脱它!

【问题讨论】:

    标签: scala slick


    【解决方案1】:

    update 采用 Tuple - 如果没有采用多个参数的方法,scala 有一个功能可以将带有多个参数的方法调用转换为一个元组:

    def anExample(value: (Int, Int, String)): Int = value._3.length
    
    // This is how it is properly called
    anExample((1, 2, "hi"))
    
    // But this also works
    anExample(1, 2, "hi")
    

    您可以:

    • 更新你的电话

      // Note the added tuple parenthesis
      .update((state.name, DateTime.now(DateTimeZone.UTC)))
      
    • -Yno-adapted-args 添加到您的scalacOptions 以完全删除警告:

      // If using SBT
      scalacOptions in Compile += "-Yno-adapted-args"
      

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多