我看到有两种方法可以在Hibernate中创建update query
。首先,您可以使用我们拥有hql的标准方法:
Query q = session.createQuery("update" + LogsBean.class.getName() + " LogsBean " + "set LogsBean.jobId= :jobId where LogsBean.jobId= :oldValue ");
q.setLong("jobId", jobId);
q.setLong("oldValue", 0);
return q.executeUpdate();
或者我们可以去运行
getHibernateTemplate.saveorupdate(jobId);
现在我正在运行第一个查询时遇到java.lang.IllegalArgumentException: node to traverse cannot be null!
并且我不确定hwo是否在getHibernateTemplate
示例中提供条件,我想在日志表中更新jobIds
,其值为0,所以我想要运行类似
Update logs set jobId = 23 where jobId = 0
上面是我正在尝试运行的简单sql
查询但是我想通过hibernate运行它,尝试了几种方法但是它没有用,有什么建议吗?
更新
正如Jeff所说,问题是在更新后没有空间,所以问题得到了解决,但仍然没有更新值,我更新了show_sql为hibernate并检查可能是什么原因导致问题,将运行查询由hibernate生成再次运行db并查看记录是否更新。
答案 0 :(得分:0)
可能有助于您解决此问题的一些事项:
.executeUpdate()
返回什么,0(因为它没有更新任何内容)
行)?HibernateException
你是谁
无声地捕捉或重新抛出?FlushMode
?