System.out.println("开始删除");
boolean flag = false;
Session session = getSession();
Transaction transaction = session.beginTransaction();
try {
NewsInformations newsInformations = (NewsInformations) session.load(NewsInformations.class,id);
session.delete(newsInformations);
flag = true;
transaction.commit();
}catch (Exception e){
transaction.rollback();
flag = false;
}finally {
System.out.println(flag);
return flag;
}
保存 查询都没问题 但是删除与查询就不可以 而且还不报错,sql语句也没有打印,怎么办啊 在线等 ,急急急
你的session是手动管理的嘛?
如果是手动管理的,方法都执行完毕了,是不是要关闭下session呢
我的事物管理是spring 来管理的,但还是删除和修改不起作用,所以我有手动写了一遍事物提交,但是因为事物是spring 自己管理的,如果在finally里边close
session 的话 ,会报错的
你没把异常打印出来,所以没看的任何异常,你的代码:
}catch (Exception e){
transaction.rollback();
flag = false;
}finally {
System.out.println(flag);
return flag;
}
改为:
}catch (Exception e){
e.printStackTrace();//最好记录日志,这里就简单打印了
transaction.rollback();
flag = false;
}finally {
System.out.println(flag);
return flag;
}
哦哦 我知道问题出在哪里了 这张表关联着另外一张表 但是delete 方法不是可以删除所有吗
终于找到问题所在了,需要在配置的时候在 一 的一方写上 ;
@OneToMany(mappedBy = "newsInformations",orphanRemoval = true)
@LazyCollection(LazyCollectionOption.EXTRA)
private List newsInformationsPictures;
当 某张表被另外一张表关联或者数据正在被另一个用户执行增删改操作的时候,这条数据就会被锁住,只能执行查询,无法增删改
感觉表之间做关联没有什么使用意义
果然,我也是保存能执行,更新和删除操作执行了会失效,我一直以为是我数据状态的问题,后来又想到了是不是事务没提交,最后看到你这个问题我果断的尝试了一把,ok,就是他的问题,两天的血汗啊,终于明白了,长记性了