session.commit(); .........提交是事务,不是SESSION
因改写成
session.beginTransaction.commit();

解决方案 »

  1.   

    session.beginTransaction.commit(); 可以么?一般不都是这样么?
    Session session = getSession();
    Transaction tr = session.beginTransaction(); 
    session.save(o); 
    tr.commit();
      

  2.   

    很简单,
    你在每个session.commit()前面写上:session.flush();
    这样也符合楼主本来的逻辑了,就OK了;当然,楼上几位答案同样正确,走正规路线~~~;
      

  3.   

    //开启
    Transaction tran = session.beginTransaction();
    //提交
    tran.commit();
    或者你用Spring来声明Hibernate的事务
      this.getHibernateTemplate().save(user); --------------------------------------------------------package com.east.spring.manager.impl;import java.util.Date;
    import java.util.Vector;import org.hibernate.Session;
    import org.hibernate.Transaction;
    import org.springframework.orm.hibernate3.support.HibernateDaoSupport;import com.east.spring.manager.LogManager;
    import com.east.spring.manager.UserManager;
    import com.east.spring.model.Log;
    import com.east.spring.model.User;
    import com.east.spring.util.HibernateUtil;/**
     * @author:East(张栋芳)
     * @date:Nov 27, 2008
     * @content:对userManager接口的实现通过Spring声明事务,就不要定义事务,和session
     * HibernateDaoSupport这个类是对Session和Sessionfactory信息的封装
     */public class UserManagerImpl extends HibernateDaoSupport implements UserManager {
    //使用注入的方式来获的logManager,就不需要new了,
    private LogManager logManager = null;
    public LogManager getLogManager() {
    return logManager;
    } public void setLogManager(LogManager logManager) {
    this.logManager = logManager;
    } /**
     * 新增用户
     * @param user
     * @return void
     */
    public void addUser(User user) {
        //这个方法要注入SessionFactory
        this.getHibernateTemplate().save(user); 
    //在保存user的同时,还要保存日志信息
    Log log = new Log();
    log.setId(2);
    log.setType("安全日志");
    log.setDetail(user.getName()+"用户被创建了");
    log.setTime(new Date());
    logManager.addLog(log);
    }

    /**
     * 查询所有用户
     * @param void 
     * @return Vector<User>
     */
    public Vector<User> selectUser() {

    return null;
    }

    /**
     * 修改用户
     * @param user 
     * @return void
     */
    public void updateUser(User user) {


    } }