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
相关产品推荐
相关产品推荐

