0

以下のコードは、データベースの更新に警告なしで失敗します。ここで報告するエラー メッセージはありません。「sessionFactory.getCurrentSession().saveOrUpdate(sn);」という行のようです。(スニペットの下部に向かって) は無視されています。私は何を間違っていますか?

    public String getSerialNumber(String id) {
    log.debug("--------------------------------------------------------------------------------------------Looking for Serial number counter named: " + id);
    SerialNumber sn = (SerialNumber) sessionFactory.getCurrentSession().get(SerialNumber.class, id);
    if (sn == null) {
        //TODO Throw an error (maybe). The code below creates a new Serial number counter
        log.debug("NO Serial Number for: " + id + " was found.");

        sn = new SerialNumber();
        sn.setSerialNumberId(id);
        sn.setName("Unspecified");
        sn.setValue(1);
        log.debug("-----------------------------------------" + sn.toString());
        sessionFactory.getCurrentSession().save(sn);
        log.debug("--------------------------------------------------------------------------------------------Right after SAVE call. This is id --> " + id);
        return "1";
    }

    sn.setValue(sn.getValue()+1);
    log.debug("--update---------------------------------" + sn.toString());
    log.debug("--update---------------------------------" + sn.getValue());
    sessionFactory.getCurrentSession().saveOrUpdate(sn);

    log.debug("--update---------------------------------" + sn.getValue());
    log.debug("--update------------------------------------------------------------------------------------Right after SAVE call. This is id --> " + id);
    return sn.getValue().toString();
}
4

2 に答える 2

0

あなたの問題は、あなたの変更がデータベースにコミットされていないことだと思います。トランザクションをコミットするか、セッションを閉じる必要があります。

これが簡単なトランザクションコミットです

 Session session = sessionFactory.getCurrentSession();
 Transaction tx = session.beginTransaction();

 // your changes

 tx.commit();  // or you can rollback on exceptions
于 2012-07-25T15:18:55.883 に答える
0

新しいオブジェクトを作成する必要があると思います。古いオブジェクトからフィールドをコピーし、saveorupdate(new object) を実行します

于 2012-07-25T15:07:10.027 に答える