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

Hibernate执行更新列空值HQL报错,求解决方案

问题解决:Hibernate执行UPDATE语句抛出IllegalQueryOperationException异常

异常原因

你使用的session.createQuery(hql, EmployeeTask.class)是为SELECT查询设计的方法,它需要指定查询返回的实体类型,但UPDATE属于非SELECT的DML操作,不需要返回实体结果,因此触发了该异常。

修正方案

替换掉带结果类型的createQuery重载方法,直接调用不带结果类型的session.createQuery(hql)版本即可。

修正后的完整代码

try(Session session = sessionFactory.openSession()) {
    session.beginTransaction();
    String hql = "update EmployeeTask set employee = 1 where employee is null";
    session.createQuery(hql).executeUpdate();
    session.getTransaction().commit();
}

额外说明

  • 请确认EmployeeTask实体中的employee字段为数值类型(如Integer),否则设置值为1会引发类型不匹配问题。
  • executeUpdate()方法会返回受影响的行数,你可以接收该返回值验证更新效果:int updatedRows = session.createQuery(hql).executeUpdate();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 04:18:11