使用executeUpdate更新查询 - 错误说String不能转换为java.lang.Integer

时间:2014-11-09 13:49:05

标签: grails groovy

我正在尝试更新结果表。我用来更新的代码如下:

Domain类Result具有以下属性

int rate

来自控制器的代码:

Result.executeUpdate("update Result b set b.rate=:rate " +
            "where b.id=:id",
            [rate: params.rate, id: (Long) ((params.id).toInteger())])

我最终收到以下错误:

java.lang.String cannot be cast to java.lang.Integer

注意:params.rateinteger,因此如何update查询。

1 个答案:

答案 0 :(得分:3)

  

注意:params.rate是一个整数,所以如何更新查询。

除非您明确转换它们,否则参数值始终是字符串(或字符串的列表/数组)。试试这个

Result.executeUpdate("update Result b set b.rate=:rate where b.id=:id",
    [rate: params.int('rate'), id: params.long('id')]
)