You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Grails 4调用executeUpdate搭配IN子句参数绑定出现类型转换错误

问题根因

  • 使用参数绑定传入IN子句的值时,Hibernate要求传入的参数是与目标字段类型匹配的集合对象,而非逗号拼接的字符串。你当前传入的rowId是String类型,Hibernate会尝试将整个字符串直接转换为id字段对应的Long类型,因此抛出java.lang.String cannot be cast to java.lang.Long异常。
  • 字符串拼接的写法会直接把100,101嵌入SQL语句,最终执行的SQL语法为in (100,101),符合数据库语法要求,所以可以正常运行。

修复方案

先将逗号分隔的ID字符串拆分为Long类型的集合,再传入参数即可,示例代码如下:

def rowId="100,101"
// 拆分字符串并转换为Long类型集合
def ids = rowId.split(",").collect { it.toLong() }
Image.executeUpdate("update Image set status='DELETED' where status='NEW' and id in (:ids)", [ids: ids])

内容的提问来源于stack exchange,提问作者NiBE

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 05:57:05