Session session = getHibernateTemplate().getSessionFactory().openSession();
Transaction tx = session.beginTransaction();
int count = 0;
try{
for(int i=0;i<data.size();i++){
try{
session.save((TbRawData)data.get(i));
count++;
}catch(HibernateException e){
e.printStackTrace();
}
System.out.println("id:"+count);
if(i%1000==0){
session.flush();
session.clear();
}
}
tx.commit();
}catch(HibernateException e){
tx.rollback();
e.printStackTrace();
}finally{
session.close();
}
return count;
是这样的,由于效率问题,我想批量把数据插入数据库,但是这样的话如果一条数据有问题,那么全部都会rollback,现在是想让有错的数据不管,其他的照常插入,请问下session.save后抛出异常,怎么把这个搞掉,然后flush的时候不报错呢??
Transaction tx = session.beginTransaction();
int count = 0;
try{
for(int i=0;i<data.size();i++){
try{
session.save((TbRawData)data.get(i));
count++;
}catch(HibernateException e){
e.printStackTrace();
}
System.out.println("id:"+count);
if(i%1000==0){
session.flush();
session.clear();
}
}
tx.commit();
}catch(HibernateException e){
tx.rollback();
e.printStackTrace();
}finally{
session.close();
}
return count;
是这样的,由于效率问题,我想批量把数据插入数据库,但是这样的话如果一条数据有问题,那么全部都会rollback,现在是想让有错的数据不管,其他的照常插入,请问下session.save后抛出异常,怎么把这个搞掉,然后flush的时候不报错呢??
去掉事务控制,让它自动提交,就可以了。