我的代碼運行良好,但不應該根據我對Hibernate的瞭解。休眠更新,而不是在保存後拋出預期的錯誤
我進行保存對象的操作如下:
IProfile profile = profileManager.getById(profileDtoModifyForm.getId());
profile.setName(profileDtoModifyForm.getName());
profile.setDescription(profileDtoModifyForm.getDescription());
profileManager.save(profile);
的profileManager.getById()
方法使用org.Hibernate.Session.get()
方法來獲取對象
的profileManager.save()
梅索德使用org.Hibernate.Session.save()
但我期待一個錯誤因爲該對象已存儲在數據庫中並具有一個id。
代替,休眠執行更新:
Hibernate: update profile set description=?, name=? where id=?
然後我不明白保存和saveOrUpdate方法之間的區別...
afters關於一些期試驗研究,我發現了很多的描述。一個說,如果ID存在休眠執行更新後,對方稱它應該拋出一個錯誤...
PS:我使用Spring,如果它改變了什麼...
profileManager是什麼? – Chaitanya 2014-10-01 10:35:10
哼,對不起,這是一個服務,只是調用** profileManager.save()** ** org.hibernate.Session.save()** – minioim 2014-10-01 10:44:06
如果對象已經是hibernate管理的實例,則save不會執行任何操作。您正在修改託管實例,因此只要方法結束(並且我假設您已設置事務),該方法將對事務執行提交,並且更新(是更新)將刷新並提交到數據庫。你可以刪除保存,它仍然會這樣做。 – 2014-10-01 10:44:29