天天看點

hibernatetemplate.save()批量儲存隻儲存一條記錄

今天在做hibernate批量儲存的時候,發現隻有第一條記錄産生了insert語句,後面的全都是update。導緻資料庫隻有1條資料。

hibernatetemplate.save()批量儲存隻儲存一條記錄

由于對hibernate不是很熟。是以百度了資料才解決。原因是因為hibernate.save()第一條記錄時,将crawlerAlertData對象由瞬時态變為了持久态。後面的save()方法由于對象已經是持久态了,是以不會再進行insert操作。

hibernatetemplate.save()批量儲存隻儲存一條記錄

這是第一次更新,對象為瞬時态,save方法執行insert操作。

hibernatetemplate.save()批量儲存隻儲存一條記錄

第一次更新之後,crawlerAlertData對象已有瞬時态變為了持久态,後面再對crawlerAlertData進行操作,都是update操作。

我的解決辦法是不對crawlerAlertData進行操作,而是對BeanUtils.copyProperties() 拷貝出來的新對象進行save()。

hibernatetemplate.save()批量儲存隻儲存一條記錄