Hibernate 提交事务的问题 应该和事务没有关系看看你的业务逻辑,第一次删除和第二次删除的日志是否是你希望执行的初步怀疑是struts那写的问题 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 很简单,你的session没有关闭需要在commit后面加HibernateSessionFactory.closeSession(); 还是不行 public ActionForward delete(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { SupplierForm supplierForm = (SupplierForm) form; SupplierBean supplierBean = new SupplierBean(); Integer supplierId = supplierForm.getId(); try { supplierBean.delete(supplierId); //删除,调用下面的delete()方法 } catch (RuntimeException e) { System.out.println("*****************"+e); } try { Collection col = supplierBean.finall(); request.setAttribute("supplierList", col); saveToken(request); } catch (Exception e) { e.printStackTrace(); } return mapping.findForward("show"); } //删除 public void delete(Integer id) { SupplierBo supplierBo = new SupplierBo(); Supplier supplier = supplierBo.findById(id); supplierBo.delete(supplier); //调用下面的delete方法 } public void delete(Supplier supplier) { try { Session session = HibernateSessionFactory.currentSession(); Transaction transaction = session.beginTransaction(); session.delete(supplier); transaction.commit(); HibernateSessionFactory.closeSession(); } catch (HibernateException e) { // TODO 自动生成 catch 块 e.printStackTrace(); } } Supplier supplier = (Supplier)session.get(Supplier.class,new Integer(9)); 我想那个 9 是怎么回事?你确信你的数据库里有这个数据吗?他怎么可能被删除2次呢? 数据库有这条记录``这个只是做测试的时候用的实际上用的是public ActionForward delete(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { SupplierForm supplierForm = (SupplierForm) form; SupplierBean supplierBean = new SupplierBean(); Integer supplierId = supplierForm.getId(); try { supplierBean.delete(supplierId); //删除,调用下面的delete()方法 } catch (RuntimeException e) { System.out.println("*****************"+e); } try { Collection col = supplierBean.finall(); request.setAttribute("supplierList", col); saveToken(request); } catch (Exception e) { e.printStackTrace(); } return mapping.findForward("show"); } //删除 public void delete(Integer id) { SupplierBo supplierBo = new SupplierBo(); Supplier supplier = supplierBo.findById(id); supplierBo.delete(supplier); //调用下面的delete方法 } public void delete(Supplier supplier) { try { Session session = HibernateSessionFactory.currentSession(); Transaction transaction = session.beginTransaction(); session.delete(supplier); transaction.commit(); HibernateSessionFactory.closeSession(); } catch (HibernateException e) { // TODO 自动生成 catch 块 e.printStackTrace(); } } public void delete(Integer id) { SupplierBo supplierBo = new SupplierBo(); Supplier supplier = supplierBo.findById(id); supplierBo.delete(supplier); //调用下面的delete方法 } public void delete(Supplier supplier) { try { Session session = HibernateSessionFactory.currentSession(); Transaction transaction = session.beginTransaction(); session.delete(supplier); transaction.commit(); HibernateSessionFactory.closeSession(); } catch (HibernateException e) { // TODO 自动生成 catch 块 e.printStackTrace(); } }这样子理论上是通过的因为一般的处理可以归结为:Session session=HibernateSessionFactory.currentSession();Transaction ts=session.beginTransaction();try { .... //相关处理 ts.commit(); //提交} catch (Exception e) { if(ts!=null){ ts.rollback(); //回滚 }}finally{ HibernateSessionFactory.closeSession();} session.flush();然后ts.commit(); weblogic8.1,mstr8.02,jdk1.4 点第一次时登录不了,点第二次以上才能登录成功 Struts的运行原理?和Struts的运行步骤? 准备找工作了,大家给我点建议 这几天悼念玉树同胞的网页黑白效果是怎么弄的呢? 如何获取客户端中的ip地址和mac地址? hibernate问题,求高手帮忙啊 struts2中如何实现在struts.xml配置文件的action标签中加入自定义属性? 级联删除问题 ibatis的一个很奇怪的问题 J2EE与Web Service应用开发的论 jsp接受表单,页面出现乱码 JTA Rollback 回滚问题
public ActionForward delete(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
SupplierForm supplierForm = (SupplierForm) form;
SupplierBean supplierBean = new SupplierBean();
Integer supplierId = supplierForm.getId();
try {
supplierBean.delete(supplierId); //删除,调用下面的delete()方法
} catch (RuntimeException e) {
System.out.println("*****************"+e);
}
try {
Collection col = supplierBean.finall();
request.setAttribute("supplierList", col);
saveToken(request);
} catch (Exception e) {
e.printStackTrace();
}
return mapping.findForward("show");
} //删除
public void delete(Integer id)
{
SupplierBo supplierBo = new SupplierBo();
Supplier supplier = supplierBo.findById(id);
supplierBo.delete(supplier); //调用下面的delete方法
} public void delete(Supplier supplier)
{
try {
Session session = HibernateSessionFactory.currentSession();
Transaction transaction = session.beginTransaction();
session.delete(supplier);
transaction.commit();
HibernateSessionFactory.closeSession();
} catch (HibernateException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
我想那个 9 是怎么回事?
你确信你的数据库里有这个数据吗?他怎么可能被删除2次呢?
public ActionForward delete(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
SupplierForm supplierForm = (SupplierForm) form;
SupplierBean supplierBean = new SupplierBean();
Integer supplierId = supplierForm.getId();
try {
supplierBean.delete(supplierId); //删除,调用下面的delete()方法
} catch (RuntimeException e) {
System.out.println("*****************"+e);
}
try {
Collection col = supplierBean.finall();
request.setAttribute("supplierList", col);
saveToken(request);
} catch (Exception e) {
e.printStackTrace();
}
return mapping.findForward("show");
} //删除
public void delete(Integer id)
{
SupplierBo supplierBo = new SupplierBo();
Supplier supplier = supplierBo.findById(id);
supplierBo.delete(supplier); //调用下面的delete方法
} public void delete(Supplier supplier)
{
try {
Session session = HibernateSessionFactory.currentSession();
Transaction transaction = session.beginTransaction();
session.delete(supplier);
transaction.commit();
HibernateSessionFactory.closeSession();
} catch (HibernateException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
{
SupplierBo supplierBo = new SupplierBo();
Supplier supplier = supplierBo.findById(id);
supplierBo.delete(supplier); //调用下面的delete方法
} public void delete(Supplier supplier)
{
try {
Session session = HibernateSessionFactory.currentSession();
Transaction transaction = session.beginTransaction();
session.delete(supplier);
transaction.commit();
HibernateSessionFactory.closeSession();
} catch (HibernateException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
这样子理论上是通过的
因为一般的处理可以归结为:
Session session=HibernateSessionFactory.currentSession();
Transaction ts=session.beginTransaction();
try {
.... //相关处理
ts.commit(); //提交
} catch (Exception e) {
if(ts!=null){
ts.rollback(); //回滚
}
}finally{
HibernateSessionFactory.closeSession();
}
然后ts.commit();