本帖最后由 sunqiusong 于 2011-10-24 11:45:10 编辑

解决方案 »

  1.   

    您好,你没有加事务注解@Transactional
      

  2.   

    加了,没看到,试试注解改为:<!--使用基于注解方式配置事务 -->
    <tx:annotation-driven transaction-manager="txManager"/>
      

  3.   

    楼主这个写没啊
    <tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
    <tx:method name="get*" read-only="true" />
    <tx:method name="find*" read-only="true" />
    <tx:method name="count*" read-only="true" />
    <tx:method name="validate*" read-only="true" />
    <tx:method name="add*" propagation="REQUIRED"
    rollback-for="Exception" />
    <tx:method name="save*" propagation="REQUIRED"
    rollback-for="Exception" />
    <tx:method name="update*" propagation="REQUIRED"
    rollback-for="Exception" />
    <tx:method name="verify*" propagation="REQUIRED"
    rollback-for="Exception" />
    <tx:method name="clear*" propagation="REQUIRED"
    rollback-for="Exception" />
    <tx:method name="del*" propagation="REQUIRED" rollback-for="Exception" />
    <tx:method name="resume*" propagation="REQUIRED" rollback-for="Exception" />
    </tx:attributes>
    </tx:advice>
      

  4.   

    这个有的
     <tx:annotation-driven transaction-manager="transactionManager" />
      

  5.   

    先看是否有异常。
    再看下show_sql 有没有sql出来了。 
    再debug进去看下service对象是不是个代理对象。
    再debug进代理对象看是否对应到该事务管理器。
      

  6.   

    没有任何异常,可以肯定的一点是,事务没有提交,对DAO加session.flush()后可以插入数据
      

  7.   

    哦, 应该是你dao那边没加事务配置的缘故
      

  8.   

    你在save方法上也加上 @Transactional 应该就行了
      

  9.   

    这个注解可以不放在DAO层吗?我现在通过下面的方式实现的@Service
    @Transactional
    public class CmsSiteMngImpl implements CmsSiteMng{
    protected ChannelDao channelDao;
    protected SiteDao dao;
    @Autowired
    public void setChannelDao(ChannelDao channelDao) {
    this.channelDao = channelDao;
    }
    @Autowired
    public void setDao(SiteDao dao) {
    this.dao = dao;
    }
    public void sayHello() {
    CmsSiteInfo site = new CmsSiteInfo();
    site.setSiteName("oooooqqqq");
    dao.save(site);
    channelDao.test();
    CmsChannel channel = new CmsChannel();
    channel.setSite(dao.findById(""));
    channel.setChannelName("1111111");
    channelDao.save(channel);
    }
    @Transactional(readOnly = true)
    public CmsSiteInfo findById(String id) {
    CmsSiteInfo entity = dao.findById(id);
    return entity;
    }
    }