0

update query我看到在 Hibernate 中有两种创建方法。首先,您可以使用我们拥有 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查询,但我想通过休眠运行它,尝试了几种方法但它不起作用,有什么建议吗?

更新:

正如 Jeff 所指出的,问题在更新后没有空间,因此问题得到了解决,但值仍然没有更新,我已经为 hibernate 更新了 show_sql true 并检查可能是问题的原因,将运行由 hibernate 生成的查询再次运行 db 并查看记录是否已更新。

4

1 回答 1

0

有几件事可能会帮助您解决此问题:

  • 返回什么.executeUpdate(),0(因为它没有更新任何行)?
  • 它会抛出一个HibernateException你正在默默捕捉或重新抛出的东西吗?
  • FlushMode你配置了哪个?
  • 更新是否到达数据库?您可以打开数据库服务器的查询日志。
于 2012-07-05T19:33:49.227 回答