-1

休止状態で saveOrUpdate メソッドを使用するときに条件付きで値を設定することは可能ですか? 私のシナリオは、行が挿入されたときにステータスを NEW に設定する必要があるか、更新されたときにステータスを MODIFIED に​​設定する必要があるということです。saveOrUpdate メソッドを使用してこれを実行しようとしています。したがって、この方法でステータスを設定することは可能ですか?

申し訳ありませんが、以前にコードを投稿しませんでした..

以下はコードスニペットです

SessionFactory sessionfactory1 = HibernateUtil.getSessionFactory1();
    Session session = sessionfactory1.openSession();
    Transaction transaction1 = session.beginTransaction();
    SearchFileMasterDO oSearchFileMasterDO = new SearchFileMasterDO();
    oSearchFileMasterDO.setId("some unique name");//identifier
    oSearchFileMasterDO.setText("some value");
    oSearchFileMasterDO.setStatus("NEW"); //if an update happens it needs to be set as "MODIFIED"
    session.saveOrUpdate(oSearchFileMasterDO);
    transaction1.commit();
    session.close();

基本的に、シナリオに基づいてステータスを変更する方法があるかどうかを知る必要があります。saveOrUpdate 呼び出しで直接それを行うことは可能ですか?

4

1 に答える 1

1

コミットしようとしているデータの存在を確認しようとする場合は、それに応じてフラグを設定できます。したがって、次のことができます。

  1. 自動生成された列があり、それが手動で設定されている場合、新しいデータの Bean では null になります。
  2. シーケンスジェネレーターを使用してDBによって設定された自動生成キーがある場合、フィールドもnullになります。
  3. データが DB に存在する場合は、最初に DB からデータを取得し、それを更新してから DB に永続化します。
  4. 自動生成されたキーがない場合は、ステップ 3 が役立ちます。

したがって、ablve は、ステータスが NEW か MODIFIED かを識別するのに役立ちます。これは実際には、コミットする前に手動でデータをダーティにマークするようなものです。

お役に立てれば。

于 2013-06-10T07:54:50.030 に答える