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层就没有了;

    评论

报告相同问题?

悬赏问题

  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办