将<hibernate-mapping>中的 
 <id name="id" type="java.lang.Integer"> 
            <column name="id" /> 
            <generator class="native" /> 
</id> 
改成
 <generator class="identity" /> 
试试.

解决方案 »

  1.   

    <generator class="identity" /> 
      

  2.   

    既然执行了sql又没有错,那么很有可能是没有正确使用事务控制。
    如果上层用spring等框架控制hibernate,那么检查spring的的声明式事务的配置是否正确,对调用hibernate的业务类的拦截是否起效,方法名的前缀是否配置正确等。
    如果是直接由hibernate的session来控制,那么是否正确使用事务了:
    Transaction tx = session.beginTransaction();
    tx.begin();
    try{
    session.save(xxx);
    tx.commit();
    }
    catch (Exception e) {
    tx.rollback();
    }
    session.close();
      

  3.   


    上面的有道理,但你也试着将<property name="age" type="java.lang.Integer"> 
                <column name="age" not-null="true" /> 
            </property> 
            <property name="name" type="java.lang.String"> 
                <column name="name" length="10" not-null="true" /> 
            </property> 中的not-null="true"删除掉试试看
      

  4.   

    同意1楼,以前遇到过,sql中的自动增长问题,native就得改成identity才好用