私はHibernate 3.6 Final、Guice-persist、およびJPA2を使用しています。JPA2 + Hibernate + Guice-persist:バージョンの振る舞い
すべての設定が完了しており、私のbeanにはゲッターとセッターがある@Version private Long version;
があります。
すべてのフィールドでequalsとhashcodeを実装しました。
保存方法私のDAOは以下のとおりです。私は名前を変更して再度保存しようとするならば、私は「StaleObjectstateExceptionを得、その後
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
:私のような何かを行う場合は、
@Transactional
public void save(Product p){ em.persist(p); }
しかし、行が更新または削除されました...」...
オブジェクトを保存するときにエンティティマネージャにバージョンを更新させるにはどうすればよいか知りたいです。
ありがとうございます。
うーん...私は理解して...問題は、私はGWTを使用するということですので、私はDTOのとなどへの変換を行う必要があります..ので、私は私が示す例のような何かをしなければならない...これを解決するための良い方法のための任意のアイデアを得た?実際には、私は "保存"メソッドを作成し、Beanを返し、私は、マージを呼び出すときに、私は永続化またはマージを呼び出すかどうかを決定し、私もフラッシュし、その後、Beanを返します。これは動作しますが、醜いです... BTW、回答ありがとう:) – caarlos0
申し訳ありません、GWT/GINの経験はありません。一般的に分離されたエンティティは、まともなDTOを作ることができますが、現在のユースケースに対して特別な特性が必要かどうかはわかりません。 – esej