public Boolean addGoodsCity(String goods, String city) {
// TODO Auto-generated method stub
Session session = HibernateSessionFactory.getSession();
Transaction t = session.beginTransaction();
String a[] = goods.split(",");
WorldonlineGoods wg = new WorldonlineGoods();
wg.setName(a[0]);
wg.setWeight(Integer.valueOf(a[1]));
wg.setPrice(Integer.valueOf(a[2]));
wg.setUnit(a[3]);
wg.setImage(a[4]);
wg.setDes(a[5]); String hql = "select id from WorldonlineGoods where name=:gods";
List list  =  session.createQuery(hql).setString("gods",
wg.getName()).list();
if (list.isEmpty()) {
session.save(wg);
t.commit();
//session.clear();
WorldOnlineGoodsPort wgp= new WorldOnlineGoodsPort();
String hql1 = "select id from WorldonlineGoods where name=:gods";
List list1 = session.createQuery(hql1).setString("gods",wg.getName()).list();
if(!list1.isEmpty()){
wgp.setGoodsid((Integer)list1.get(0));
wgp.setPortcityid(Long.parseLong(city));
session.save(wgp);
}
t.commit();
session.close();
return true;
}
return false;
}报错:严重: Servlet.service() for servlet action threw exception
org.hibernate.TransactionException: Transaction not successfully started
at org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:100)//数据传过来了 并且第一个commit()已经执行成功 可是到第二个 就报错  我想知道 我具体哪里的问题 是否 hibernate 不支持一个方法里有两个提交 可是 如果这样的话 我还不知道怎么实现功能 那位大哥 帮帮忙 谢谢  在线等

解决方案 »

  1.   

    我不是很明白  代码就这些 我的意思是 提交数据后 判断 如果不存在 save数据 然后 在插入到另一张表中 一个事物要如何实现呢 请指教
      

  2.   

    老紫竹 谢谢 放在一个事物里 确实实现了方法 看来 我对hibernate实现原理 了解的不清楚 
      

  3.   

    这和hibernate的原理没有什么关系!
    所谓事务就是将好多操作包裹成一个原子性的,要成功都成功,只要里面一个失败就要回滚。
    所以通常的做法是:try{
    1.开启事务
    2.所有操作
    3.提交操作
    }catch(){
    事务回滚
    }
    finally{
    关闭一些session
    }