save()方法傳入了id,但是識別成了新增
新建了model并且調(diào)用save()導(dǎo)致識別成了新增
Model model=new Model ();
copyItem2Model(Item,model);//轉(zhuǎn)換
modelDao.save(visWatchList);
修改后
Model model=modelDao.findById(id);
copyItem2Model(Item,model);//轉(zhuǎn)換
modelDao.save(visWatchList);
hibernate持久層三種狀態(tài)
- 瞬時狀態(tài) (Transient)
new了一個對象,但是沒有被hibernate緩存管理,數(shù)據(jù)庫中沒有一條記錄和其對應(yīng),不與session關(guān)聯(lián)
- 持久狀態(tài) (Persistent)
- save() 和 saveOrUpdate()使對象轉(zhuǎn)換成持久態(tài)
- find(),get()等方法查詢的對象也是持久態(tài)
對象被持久化對象管理,對象的改變會同步帶數(shù)據(jù)庫(這就是原因)同步不會馬上進(jìn)行,在Transaction之后,也就是commit()后提交。未提交的叫臟數(shù)據(jù)
- 游離狀態(tài) (Detached)
- close() 或 clear(),evict() 之后,持久對象會變?yōu)槊摴軐ο?/li>
- 就是脫離管理狀態(tài)
脫管對象和瞬時狀態(tài)差不多,只是數(shù)據(jù)庫內(nèi)可能存在一樣的記錄,但是并不關(guān)聯(lián)。