[英]hibernate session.flush with spring @transactional
[英]session.flush() caused Null Pointer Exception in Hibernate
我試圖將對象保存為一個循環,當遇到錯誤時,我不想停止工作,因此我的代碼如下所示:
for(Model model:list){
try {
if (model != null) {
getHibernateTemplate().saveOrUpdate(model);
getHibernateTemplate().flush();
}
} catch (Exception e) {
log.error(e);
if (model!= null) {
getHibernateTemplate().getSessionFactory().evict(Model.class, model.getId());
}
getHibernateTemplate().evict(model);
}
}
除了一個對象保存失敗,其余所有對象都失敗並出現java.lang.NullPointerException之外,它工作正常。 根據我的調試跟蹤,Hibernate會話絕對不為空。 我的代碼有什么問題嗎? 任何意見將不勝感激!
當會話引發異常時,您不應繼續處理它,因為它處於不一致的狀態。 如果拋出異常,則應在回滾所有事務時進行事務內的保存。
搜索“發生異常后不要刷新會話”以獲取更多信息
另外,您的代碼的這一部分看起來很奇怪:
if (model!= null) {
getHibernateTemplate().getSessionFactory().evict(Model.class, model.getId());
}
getHibernateTemplate().evict(model);
模型為空時應該怎么辦? 您不應該將最后一行放在if語句中嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.