我有一個JPA實體人有一個@Version長版本字段。我做到以下幾點:版本沒有更新bean後繼續
<<transaction - begin>>
person.getId() --> == NULL
person.setVersion(1);
em.persist(person);
person.getId() --> returns 1 (this one is generated inside the persist call)
person.getVersion(); --> returns 1
<<transaction - end>>
現在,如果我檢查DB,版本= 2,但豆錯誤地包含1
我看到了人實體的ID獲取該人的實例正確反映。但是,在調用persist()之前,該版本仍然是一個版本。爲什麼?
爲什麼你指望一個版本提交之前更新?該規範不作出承諾IIRC – DataNucleus 2012-03-20 13:31:20
@DataNucleus - 我想發送這個版本到視圖層,以便下一個實體更新不會產生OptimisticLockingException – 2012-03-20 14:00:32
嘗試了flush()?只是不能保證立即去DB,而且DataNucleus JPA可以在flush之後提供版本,但不會在之前提供。檢查你的JPA impl文檔 – DataNucleus 2012-03-20 14:23:18