baseDao 层            public long saveObject(E entity, String callerInfor) {
             long pid = 0;             try {
             pid = (Long) this.getHibernateTemplate().save(entity);
             } catch (Exception e) {
             log.error(callerInfor + "\n" + e.getMessage());
             throw new RuntimeException("");
             }             return pid;
            }
Dao 层            public void save(Student entity) {
  super.saveObject(entity);
    }
service 层            public void saveLog(Student entityStudent,Book entityBook) {
  studentDAO.save(entityStudent);
                  bookDAO.save(entityBook);
    }
service 层 save* 都是事物自动管理出错自动回滚
为什么我在service 动保存二下save 就不行,student 和book 没有关系的两张表
刚开始报主键冲突,重启myeclipse 后没有错了
去数据库看只有第一个save 方法成功了插入一条数据,第二个没在数据库插入记录,
但是在控制台打两条hiberante 两条insert 语句都打印出来了,没有报错,
我怀疑这是二个事务把在进行第一个事务时把第二给丢了
各位大虾有遇到过吗?给俺指点指点!

解决方案 »

  1.   

    String callerInfor 参数去掉了,
      

  2.   

    baseDAO和DAO有什么联系吗?如果有的话,super.saveObject(entity);你这句竟然不报错?
      

  3.   

                public long saveObject(E entity) {
                        long pid = 0;                    try {
                            pid = (Long) this.getHibernateTemplate().save(entity);
                        } catch (Exception e) {
                            log.error(callerInfor + "\n" + e.getMessage());
                            throw new RuntimeException("");
                        }                    return pid;
                }
      

  4.   

    另外你的DAO的如下方法
     public void save(Student entity) {
          super.saveObject(entity);
    }这里的Student是参数类型,你往里面传Book 实体怎么可能会成功
      

  5.   

    DAO 继承 baseDAO
    我写错了 ,不好意思public long saveObject(E entity) {
      long pid = 0;  try {
      pid = (Long) this.getHibernateTemplate().save(entity);
      } catch (Exception e) {
      log.error(e.getMessage());
      throw new RuntimeException("");
      }  return pid;
      }
      

  6.   

    那个就没有写
    baseDAO<T extends Serializable> extends HibernateDaoSupportBookDAO extends baseDAO<Book>
    Book save(Book entity);StudentDAO extends baseDAO<Student>
    Student save(Book entity);
      

  7.   

    1·确认hibernate控制台打印的sql语句是insert语句
    2·确认你的service方法通过你所谓的自动事务管理是正确的。其实我不懂你是通过何种方式进行自动事务管理的