【发布时间】:2012-04-26 19:19:08
【问题描述】:
我使用 Hibernate 3.6 Final、Guice-persist 和 JPA2。
太好了,我已经配置好了所有东西,我的 bean 有一个 @Version private Long version;,带有 getter 和 setter。
我已经为所有字段实现了 equals 和 hashcode。
我的dao保存方法是:
@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 row is updated or deleted by ...”...
我想知道我必须做什么才能让实体管理器在保存对象时更新版本......以及为什么坚持不这样做。
提前致谢。
【问题讨论】:
标签: hibernate jpa-2.0 guice-persist