JpanA 2014-04-24 02:55 采纳率: 0%
浏览 1513

ssh 事务管理配置不能回滚

以下是我的配置信息

<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
      <property name="sessionFactory" ref="sessionFactory" />
</bean> 
<bean id="transactionBase" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
        lazy-init="true" abstract="true">
<!-- 配置事务管理器 -->            
    <property name="transactionManager" ref="transactionManager" />
<!-- 配置事务属性 -->            
    <property name="transactionAttributes">
          <props>
               <prop key="add*">PROPAGATION_REQUIRED</prop>
               <prop key="edit*">PROPAGATION_REQUIRED</prop>
               <prop key="find*">PROPAGATION_REQUIRED</prop>
               <prop key="*">PROPAGATION_REQUIRED</prop>
          </props>           
    </property>       
</bean>

<bean id="daotarget" class="JayTan.Transport.DAO.baseDAO">
    <property name="sessionFactory">
        <ref bean="sessionFactory"/>
    </property>
</bean>
<bean id="serviceTarget" class="JayTan.Transport.Service.ServerCheckTicket">
    <property name="dao">
        <ref bean="daotarget"/>
    </property>
</bean>

<bean id="service" parent="transactionBase">
    <property name="target">
        <ref bean="serviceTarget"/>
    </property>
</bean>

在action中调用如下

public String getCheckTicketMsg(){
    String strClassCode = this.getRequest().getParameter("strClasCode").toString().trim();
    String strSeatNum = this.getRequest().getParameter("id").toString().trim();
    String strTicketNum  = this.getRequest().getParameter("ticketNum").toString().trim();

    //1:查询对应的座位ID..
    Integer intSeatId = Integer.parseInt(this.checkTicketServer.queryCarSeatIdByClassNumCode(strClassCode, strSeatNum).get(0).toString().trim());
    //2:根据ID查询座位对象。
    CarSeat seatEntity = checkTicketServer.queryCarSeatEntity(intSeatId).get(0);
    //3:修改对象的信息并写入到数据库。
    seatEntity.setIsChcket(true);//检票,修改状态。。
    if(this.checkTicketServer.modfiyEntityStatus(seatEntity)){
        //准备一个检票对象,添加一些信息到数据库
        TicketSell sellEntity = (TicketSell) checkTicketServer.querySellIdByTicketNum(strTicketNum, strSeatNum).get(0);
        Integer intSellId = Integer.parseInt(sellEntity.getTicketSellId().toString().trim());
        TicketCheck cheEntity = new TicketCheck(intSellId, getCurrDateTime(), getCurrTime());

        if(checkTicketServer.addAllEntityMsg(cheEntity) > 0){

            strMsg = "OK";
        }else{
            strMsg = "NO";
        }
    }

我希望当

TicketSell sellEntity = (TicketSell) checkTicketServer.querySellIdByTicketNum(strTicketNum, strSeatNum).get(0);出错时回滚上边的
if(this.checkTicketServer.modfiyEntityStatus(seatEntity))里面的修改操作。如上配置不可行。请求高手帮忙告诉解决方法。。
  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
    • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
    • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝
    • ¥20 腾讯企业邮箱邮件可以恢复么
    • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
    • ¥15 错误 LNK2001 无法解析的外部符号
    • ¥50 安装pyaudiokits失败
    • ¥15 计组这些题应该咋做呀
    • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
    • ¥15 让node服务器有自动加载文件的功能