0

update queryHibernateで作成する方法は 2 つあります。まず、次のような 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!、最初のクエリを実行していますが、例で条件を提供する方法がわからないため、値が 0 に一致するログ テーブルgetHibernateTemplateを更新jobIdsしたいので、次のようなものを実行したい

Update logs set jobId = 23 where jobId = 0

上記はsql私が実行しようとしている単純なクエリですが、これを休止状態で実行したいのですが、いくつかの方法を試しましたが、うまくいきません。何か提案はありますか?

アップデート:

ジェフが指摘したように、問題は更新後にスペースがなかったため、問題は解決されましたが、値はまだ更新されていません。休止状態の show_sql を true に更新し、問題の原因を確認し、休止状態によって生成されたクエリを実行しますdb を再度実行して、レコードが更新されているかどうかを確認します。

4

1 に答える 1

0

これを解決するのに役立つかもしれないいくつかのこと:

  • 0 を返すのは何ですか.executeUpdate()(行を更新しなかったため)?
  • HibernateException静かにキャッチまたは再スローしている をスローしますか?
  • どれFlushModeを設定しましたか?
  • 更新はDBに届きますか? DB サーバーのクエリ ログを有効にすることができます。
于 2012-07-05T19:33:49.227 に答える