项目是标准的SSH架构,没有配置任何事务.连接池使用bonecp.一个最基本的在DAO层使用
Session session = null;
try {
    session = getSession();
    return session.save(entity);
} finally {
    if (session != null && session.isOpen()) {
session.flush();
session.clear();
session.close();
    }
}一点错误没有,控制台打出Hibernate: insert into xxxx (........
去数据库里查看,没有添加进去.然后这个方法却能够返回给我主键(在数据库中是自增的).后来又尝试getHibernateTemplate,尝试JDBC,都没有错误.结果等一段时间控制台打出"Lock wait timeout exceeded; try restarting transaction".
似乎是说事务超时.可是,我根本没有配置事务啊~这些代码以前在任何项目都是好用的,不知道这是怎么回事.完全弄不明白了.我以为是数据库表锁住了,用sqlyog连接到数据,用sql语句insert ....., 就能够成功插入数据.而且还会跳开之前在代码里插入的主键, 比如数据库中主键到9,之前代码返回主键10, 却保存失败了. 我然后用sqlyog插入. 会插入主键11. 我真是费解了啊???? 求大侠们帮我解答!!!!!!!!!!!!!!!!!!!!!!!!!!!!

解决方案 »

  1.   

    配置下你的职务,我遇到过那个问题executing(*.com.ywx.biz.impl.(..))里面没打点就不能进行操作了。。所以把你的事物配置好。
      

  2.   

    事务是数据库特有的,不提交(commit)数据他是不会向数据库中添加数据的
      

  3.   

    Hibernate 在处理数据的时候有三种状态。保存数据的时候是将瞬时状态的数据改变成永久状态。需要配置事务。
      

  4.   

    提交事务了吗?记得commit一下啊。。
      

  5.   

    你必须使用session.getTransaction().begin()/commit()来开始和提交事务