开发者社区> 问答> 正文

ssh事务提交问题,插入完,查询不到数据

<pre class="brush:java; toolbar: true; auto-links: false;"></pre>
<pre class="brush:java; toolbar: true; auto-links: false;"> public String saveRole(Integer app_id) throws Exception {
            //先插入,比如插入了10条
            save();
            //再查询,这时查不到刚才插入的10条
            getUserRole();
    }
 
        /**
     * 保存新增或修改的对象.
     */
    public void save(final T entity){
        try {
            Session session = getSession();
            session.saveOrUpdate(entity);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
</pre>
<pre class="brush:xml; toolbar: true; auto-links: false;">  <tx:advice id="txAdviceBase" transaction-manager="transactionManagerBase">
        <tx:attributes>
            <tx:method name="save*" propagation="REQUIRED"
                rollback-for="Throwable" />
            <tx:method name="update*" propagation="REQUIRED"
                rollback-for="Throwable" />
            <tx:method name="create*" propagation="REQUIRED"
                rollback-for="Throwable" />
            <tx:method name="delete*" propagation="REQUIRED"
                rollback-for="Throwable" />
            <tx:method name="run*" propagation="REQUIRED" rollback-for="Throwable" />
            <tx:method name="batch*" propagation="REQUIRED"
                rollback-for="Throwable" />
            <tx:method name="excute*" propagation="REQUIRED"
                rollback-for="Throwable" />
            <tx:method name="query*" propagation="REQUIRED"
                rollback-for="Throwable" />
        </tx:attributes>
    </tx:advice>
 
<aop:config proxy-target-class="true">
        <aop:advisor pointcut="execution(* com..*.service.*.*(..))"
            advice-ref="txAdviceBase" order="1" />
</aop:config>
</pre>
<br>
<br>
<br>
<br>
<br>
<pre class="brush:java; toolbar: true; auto-links: false;"><span style="color:#333333;font-family:Helvetica, Tahoma, Arial, sans-serif;font-size:14px;line-height:24px;background-color:#F5F5F5;">只有saveRole整个方法运行完才能再数据库查到数据。</span> <span style="color:#333333;font-family:Helvetica, Tahoma, Arial, sans-serif;font-size:14px;line-height:24px;background-color:#F5F5F5;">我知道运行saveUserRole()的时候不会插入到数据库,但是应该是存在缓存里的,执行getUserRole()是从缓存里取,为什么查不到啊?</span></pre>

展开
收起
a123456678 2016-03-16 15:39:14 2900 0
1 条回答
写回答
取消 提交回答
  • <!-- 注册事务管理器 -->
        <bean id="trxMgr" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
            <property name="sessionFactory" ref="sessionFactory"></property>
        </bean>
        <!-- 注册拦截 -->
        <bean id="trxInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
            <!-- 指定事务管理器 -->
            <property name="transactionManager" ref="trxMgr"></property>
            <!-- 指定事务策略 -->
            <property name="transactionAttributes">
                <props><!-- key表示方法,value表示策略 -->
                    <prop key="save*">PROPAGATION_REQUIRED,ISOLATION_DEFAULT,-Throwable</prop>
                    <prop key="update*">PROPAGATION_REQUIRED,ISOLATION_DEFAULT,-Throwable</prop>
                    <prop key="del*">PROPAGATION_REQUIRED,ISOLATION_DEFAULT,-Throwable</prop>
                    <prop key="*">readOnly</prop>
                </props>
            </property>
        </bean>
        <!-- 注册代理 -->
        <bean id="trxAutoProxy" class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
            <!-- 指定哪些需要代理 -->
            <property name="beanNames">
                <list>
                    <value>*Dao</value>
                    <value>*Service</value>
                </list>
            </property>
            <!-- 指定拦截 -->
            <property name="interceptorNames">
                <list>
                    <value>trxInterceptor</value>
                </list>
            </property>
        </bean>
    2019-07-17 19:04:02
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载