Hibernate:运行更新查询的问题

时间:2012-07-05 18:33:44

标签: java sql oracle hibernate

我看到有两种方法可以在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并查看记录是否更新。

1 个答案:

答案 0 :(得分:0)

可能有助于您解决此问题的一些事项:

  • .executeUpdate()返回什么,0(因为它没有更新任何内容) 行)?
  • 它会抛出HibernateException你是谁 无声地捕捉或重新抛出?
  • 您配置了哪个FlushMode
  • 更新是否到达数据库?您可以打开数据库服务器的查询日志。