spring 事务代理
<prop key="add*">PROPAGATION_REQUIRED</prop>
<prop key="save*">PROPAGATION_REQUIRED</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="query*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>public void addyjcq(String date) throws Exception{
  forinsertList(date);//删除一个时间类的所有数据
  
  String sql=".......";
  List<Test> dayList=getXXXDAO().bySql(sql);//查询..  for(int i=0;i<dayList.size();i++){//循环修改 保存
    Test wt = dayList.get(i);
    wt.setDate(date);
    getSession().save(wt);//其实用的是getHibernateTemplate().save(entity);
  }
}可是出现一个奇怪的事情. 应为数据比较多,执行这个方法的时候很长.
有时候不知道怎么回事.可能是应为很慢,会点很多次,等其他原因.有的时候保存的数据是双份的(出现机率很小),有的时候是正常. 只是存入数据库的时间不同.像是插入了2次.请问下有谁遇到过这情况阿..谢谢

解决方案 »

  1.   

    <bean id="hibernateTransactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">
    <property name="transactionManager" ref="hibernateTransactionManager" />
    <property name="proxyTargetClass" value="true" />
    <property name="transactionAttributes">
    zn85600301 你说的 "事务配在那一层?" 是指这配置吗
      

  2.   

    恩 你配置的事务代理 是service层? 还是DAO层?我怀疑有可能是事务回滚的问题 在插入2次得情况发生时是否有异常信息提示
      

  3.   

    有没有用OpenSessionInViewFilter?
      

  4.   

      没有看到你的详细配置,不好断定。不过建议你先把 事务托管取消掉,
    所有的数据库操作全部用getHibernateTemplate() 来操作,这个是hibernate封装过的一个support类里面的方法,会自动开事务的。
       先这样跑,看看会不会出现你说的这种情况。
      

  5.   

    3 楼zn85600301 你好,请问下 事务代理 是service层? 还是DAO层? 怎么判断.我想确认下.
                   不过,我们这好像是针对DAO.
                   是否有异常信息提示,这个我等下看看.现在这项目不是一个公司,服务器在别人那里,等
                     下还要找别人要日志看看..4 楼zxingchao2009 你好 ,OpenSessionInViewFilter 是在web.xml中配置的吧.
        我在 web.xml 没有搜索到.
        我还搜索多整个项目的xml都没有找到OpenSessionInViewFilter关键词,可能,没有配置吧5 楼zliangvsli 谢谢你.这个方法我这用不了,可能不能测试了.6 楼 zhuweisyyc 你好,请问下 事务的范围配置 在哪里看?本人对spring一知半解,望各位多多指点
      

  6.   

    请问是Hibernate清理缓存,还是用sql的什么函数?