测试直接用jdbc批处理没问题的,
通过hibernate 获取的jdbc连接和 直接classforname 的连接有区别吗?
下面是我的代码。
sql 是这样的
String sqlbc = "update grow_achievement_mes gam set gam.classranking =? where gam.id=? ";
下面是执行的方法。
public void batchBcNc(String sql, List<BcNcVO>list) {
Session session = getHibernateTemplate().getSessionFactory().openSession();
Connection con= session.connection();
PreparedStatement stmt = null;
int count=0;
try {
con.setAutoCommit(false);
stmt = con.prepareStatement(sql);
for(int i=0;i<list.size();i++){
count++;
if(i>0){
if(list.get(i).getExamination()==list.get(i-1).getExamination()){
stmt.setLong(1,list.get(i-1).getSequen());
stmt.setString(2,list.get(i).getId());
}
}else{
stmt.setLong(1,list.get(i).getSequen());
stmt.setString(2,list.get(i).getId());
}
stmt.addBatch();
if(count%500==0){
stmt.executeBatch();
con.commit();
stmt.clearBatch();
}
}
if(count%500!=0){
stmt.executeBatch();
con.commit();
stmt.clearBatch();
}
} catch (SQLException e) {
e.printStackTrace();
try {
con.rollback();
} catch (SQLException e1) {
e1.printStackTrace();
}
}finally{
try {
if(stmt!=null){
stmt.close();
}
if(session!=null){
session.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
现在就是这样执行之后不报错,但是数据库里没数据。
数据更新不了。
以前没有用hibernate获取连接批处理过。。这是第一次碰上这问题。求大婶帮忙看看你看下是不是hibernate集成了Spring 事务交给Sping控制了
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。