2012-09-19 61 views
0

我有冬眠非常大的問題。 當我嘗試更新或在表中保存的元素,我有這樣的錯誤:Hibernate無法保存/更新/刪除對象

org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1 

,當我打電話給我的DAO服務這個錯誤產生:

Session session = sessionFactory.getCurrentSession(); 
session.saveOrUpdate(object); 
session.flush(); 

當我調試,沖洗後()錯誤生成。

這裏表的關鍵:

@EmbeddedId 
@AttributeOverrides({ 
     @AttributeOverride(name = "sysDocId", column = @Column(name = "SYS_DOC_ID", nullable = false)), 
     @AttributeOverride(name = "sysDataFile", column = @Column(name = "SYS_DATA_FILE", nullable = false)) }) 
public RelDocFileId getId() { 
    return this.id; 
} 

感謝所有

回答

0

這意味着,Hibernate無法在數據庫中找到該記錄,UPDATE語句返回一個結果:0行受到該更新。

Hibernate的數字出來,你要更新不存在了什麼,這意味着你是在救一個過時的數據。

您應該不會允許這種情況或妥善處理這個異常,關閉會話,並說用戶「嘿,你看到一個過時的數據,它不存在了」。

+0

即使在插入或刪除我有這個問題 – Mohamed

+0

在刪除它,因爲我已經描述了同樣的情況 - 它試圖刪除並沒有什麼刪除。在插入..你有一個實體級聯插入? Hibernate會使用saveOrUpdate來實現這些目的。您是否也有'assign'的ID生成策略?如果您自己指定ID,Hibernate可能無法識別該實體是新的還是已經存在。映射和插入/刪除/更新的方式將會很有幫助。 –

相關問題