簡體   English   中英

session.flush()導致Hibernate中的Null Pointer異常

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM