我在弄批量保存数据的时候使用了session.flush();session.clear();代码如下:
public void batchSave(final List<RandomNoInfo> list) {
this.getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
try{
int count = 0;
for (RandomNoInfo randomNo : list) {
if (count % 25 == 0) {
session.flush();
session.clear();
}
session.save(randomNo);
count++;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
});
}
注释:RandomNoInfo为一要保存的实体对象。
当程序保存了25条记录的时候开始执行session.flush();session.clear();
结果却出现空指针异常,异常指向session.flush();这一行。
我就很纳闷怎么会这样?因为同样的程序段在其它人的机子上运行是没问题的,那是不是我这里有什么地方配置和其他人的不一样才出现这种情况的。
------解决方案--------------------
如果是session.flush();出现空指针,是确定了session为空吗
session为空的话,说明了什么呢
是不是doInHibernate(Session session)进入该方法时session已经为空,
以上都需要通过调试确认先
如果是这样,再做处理