你的user表主键是sequence生成的吗?save方法执行insert之前会先查询sequence值来作为你表的主键键值(select nextval ('hibernate_sequence') 
),应该是主键键值没有查询到出错了,所以没有执行insert

解决方案 »

  1.   

    检查UserDAO.java是否有事务提交。
      

  2.   

    DAO并没有事务提交! 因为我使用了autocommit啊 应该不用提交了??
    大家帮帮忙
    如果能解决这个问题 我把所有的分都给出去
      

  3.   

    使用Eclipse配置Hibernate,会生成一个session管理的工具类吧,对于添加、删除、修改操作是要有事务提交才行,就是调用session管理工具类的事务提交方法(这个方法可能没有自动生成,要自己写了)
      

  4.   

    当我设置了autocommit以后应该就不用提交了阿?
    我原来都是这样的
      

  5.   

    如果设置了autocommit=true
    那么执行完save后,还要执行session.flush()或者提交事务才能提交如果设置autocommit=false
    那么只有提交事务,才能提交到数据库
      

  6.   

    我以前有另外一个程序,在设置为autocommit=true之后就不用提交了
    俩个程序的代码几乎完全一样
    Dao中也没有事务提交的代码,包括session.flush();
    并且如果设置完autocommit之后仍然需要提交事务,那么自动提交还有什么用处阿
      

  7.   

    一直都没说过session.flush()是提交事务的意思,这就是hibernate的机制,
    你以前的如果这样那么你贴出来看看,不会存在这种情况,呵呵如果用spring的getHibernateTemplate.save()等方法的话,就无需flush(),因为getHibernateTemplate.save()里面封装了session.flush()方法,可以看一下HibernateTemplate的源码。
      

  8.   

    谢谢大家的指导!终于明白了 原来都是用的Spring的