lorcx 2016-03-02 15:35 采纳率: 46.7%
浏览 1731

ssh中事务没有被管理上,总是自动提交

application.xml



<!-- hibernate配置文件 -->


<!--方言-->
${dialect}
<!--显示sql-->
${show_sql}
<!--格式化sql-->
${format_sql}

            <prop key="hibernate.current_session_context_class">${thread}</prop>

            <prop key="hibernate.transaction.factory_class">${transaction}</prop>
        </props>
    </property>
    <property name="mappingResources">
        <list>
            <value>module/test/entity/Test.hbm.xml</value>
            <value>module/tree/entity/SsfFaLocation.hbm.xml</value>
            <value>module/base/user/entity/BaseUser.hbm.xml</value>
        </list>
    </property>
</bean>

<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory"/>
</bean>

<tx:advice id="txAdvice" transaction-manager="transactionManager">
    <tx:attributes>
        <tx:method name="save*" propagation="REQUIRED" rollback-for="java.lang.Throwable,java.lang.Exception" />
        <tx:method name="delete*" propagation="REQUIRED" rollback-for="java.lang.Throwable,java.lang.Exception"/>
        <tx:method name="update*" propagation="REQUIRED"  rollback-for="java.lang.Throwable,java.lang.Exception"/>
        <tx:method name="get*" read-only="true" propagation="NOT_SUPPORTED" />
        <tx:method name="doGet*" propagation="REQUIRED" rollback-for="java.lang.Throwable,java.lang.Exception"/>
        <!--test-->
        <tx:method name="test" propagation="REQUIRED" rollback-for="java.lang.Throwable,java.lang.Exception" />
        <tx:method name="upload*" propagation="REQUIRED" rollback-for="java.lang.Throwable,java.lang.Exception"/>
    </tx:attributes>
</tx:advice>
<!-- 那些类的哪些方法参与事务 -->
<aop:config>
    <!--没切上 只切的到了一个类  execution(* util..*.*(..))
        第二个测试daoImpl   execution(* module.test.dao.DemoDaoImpl.test(..)) or
        -->
    <aop:pointcut id="allServiceMethod" expression="(execution(* module.*.service..*.*(..)) or
                                                     execution(* module.base.*.service.*.*(..))
                                                     )"/>
    <aop:advisor pointcut-ref="allServiceMethod" advice-ref="txAdvice"/>
</aop:config>

Test1 t = new Test1();
        t.setTid("656");
        t.setTname("玉兔");
        saveEntity(t);

        Test1 t1 = new Test1();
        t1.setTid("799");
        t1.setTname("bbf");
        saveEntity(t1);
        throw new RuntimeException("报错吧");

public void saveEntity(T o) {
    Assert.notNull(o);
    getHibernateTemplate().saveOrUpdate(o);
    log.info("save entity:"+o);
}

    保存第一条就提交到数据库了 这是怎么回事啊
  • 写回答

4条回答 默认 最新

  • 大河行脚 2016-03-03 00:12
    关注

    是你理解的有问题。它的事务管理是说它的事务在Dao层执行,离开Dao层就没有了;

    评论

报告相同问题?

悬赏问题

  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算
  • ¥15 java如何提取出pdf里的文字?