在使用hibernate項(xiàng)目中,持久化類的ID用Long與long有很大區(qū)別!!
用long 作為id,當(dāng)一個新的臨時(shí)類要持久化時(shí)會報(bào)一個這種錯:
Exception executing batch: org.hibernate.StaleStateException: Batch update returned unexpected row count from update: 0 actual row count: 0 expected: 1
因?yàn)檫@個臨時(shí)類,已經(jīng)有一個id=0 (long的默認(rèn)值);這時(shí)hibernate 為錯認(rèn)為這是一條持久化類,從而進(jìn)行更新操作,故報(bào)錯!!
這時(shí)把持久類的id 類型改成Long 就OK了,再create 時(shí),臨時(shí)類的id為null ,hibernate 才會正確的判斷這是臨時(shí)類而進(jìn)行save操作!!