补充一部分配置文件:
<bean id="ManagerRoleDAOProxy" parent="abstractTxDefinition">
<property name="target">
<ref local="ManagerRoleDAO"/>
</property>
</bean>
<bean id="ManagerDAOProxy" parent="abstractTxDefinition">
<property name="target">
<ref local="ManagerDAO"/>
</property>
</bean>

解决方案 »

  1.   

    晕,这样用Spring+Hibernate....楼主的很有钻研精神啊。
    我按照楼主的方法试了一下,没碰到不能写入数据库的情况,只是ts.commit();时会发生一个异常,因为在执行前一个Dao的save时已经提交了事务。
      

  2.   

    Spring+Hibernate我哪里用错了吗?
    你如果不显式的调用ts.commit,还能保存到数据库中吗?
    照理事务已经交给Spring管理了,在save结束后会自动调用ts.commit
    我现在郁闷的是,我两个类一模一样配置的,结果却不一样,唉
      

  3.   

    IManagerRoleDAO mrd = (IManagerRoleDAO)factory.getBean("ManagerRoleDAO");
    IManagerRoleAssignDAO mrad = (IManagerRoleAssignDAO)factory.getBean("ManagerRoleAssignDAO");
    -------------------
    你得到的这2个bean都是未经过Spring增强的pojo,Spring怎么会去管理这2个bean的方法的事务呢。IManagerDAO md = (IManagerDAO)factory.getBean("ManagerDAOProxy");
    ----------
    这个就可以.
      

  4.   

    TransactionSynchronizationManager.bindResource(sessionFactory, new SessionHolder(session));
    -----------
    一般只在做单元测试的时候使用,为了opensessioninview.
      

  5.   

    我刚刚也找到这个错误了唉,拼写错误啊
    找了我十个小时的bug啊!
    我是猪啊~~~