我使用 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 行已更新或删除...”...
我想知道我必须做什么才能让实体管理器在保存对象时更新版本......以及为什么坚持不这样做。
提前致谢。