私はHibernateを初めて使用し、Hibernateを使用するWebプロジェクトに取り組んでいます。
java.sql.Timestamp
日付object( )属性modifiedDateを持つareaというオブジェクトがあります。新しいオブジェクトを作成すると、modifieDateはnullになり、それgetHibernateTemplate().saveOrUpdate(area);
を拡張する独自のクラスに送信した後org.springframework.orm.hibernate3.support.HibernateDaoSupport
、現在のタイムスタンプで設定され、データベースに保存されます。データベースでは、として保存されますdatetime
。
私の問題は、ほとんどの場合、オブジェクトがデータベースに保存されている日付と比較して1ミリ秒ずれた日付で更新されることです。これにより、ページをリロードせずに更新しようとすると、この例外が発生します。
an org.hibernate.StaleObjectStateException: Row was updated or deleted by another transaction (or unsaved-value mapping was incorrect)
その後データベースからオブジェクトを取得するときに正しい日付に問題はありません。作成時にのみ、間違った値を取得します。
SaveOrUpdateで正しいmodifiedDateを取得する方法はありますか?
マッピングで使用する必要がある場合、<timestamp name="modifiedDate" column="ModifiedDate"/>
すべてのテストはローカルホストで実行され、すべてが同じマシンで実行されます。
getHibernateTemplate().refresh(area);
saveOrUpdateの直後に呼び出すことで、正しいタイムスタンプを取得するという回避策がすでにありますが、 saveOrUpdateで正しいmodifiedDateを取得する方法があるかどうかを知りたいです。