私はHibernate3.6Final、Guice-persist、JPA2を使用しています。
とても良いです、私はすべてを構成しました、そして私の豆は@Version private Long version;
ゲッターとセッターで、を持っています。
すべてのフィールドにequalsとハッシュコードを実装しました。
私のdaosaveメソッドは:
@Transactional
public void save(Product p){ em.persist(p); }
しかし、私が次のようなことをした場合:
Product p = new Product("name"); //id=null, version=null
dao.save(p); //works, id!=null, version=0
Product p2 = new Produto(10, 0, "other name"); //id, version, name
dao.save(p2); //works, but the version isnt updated, so my version still 0
次に、名前を変更してもう一度保存しようとすると、「StaleObjectstateException行が...によって更新または削除されました」というメッセージが表示されます...
オブジェクトを保存するときにエンティティマネージャにバージョンを更新させるために何をしなければならないのか、そしてなぜpersistがこれを行わなかったのかを知りたいです。
前もって感謝します。