当前位置:编程学习 > JAVA >>

SSH事务提交问题


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();
}
}



<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>

只有saveRole整个方法运行完才能再数据库查到数据。
我知道运行saveUserRole()的时候不会插入到数据库,但是应该是存在缓存里的,执行getUserRole()是从缓存里取,为什么查不到啊? --------------------编程问答--------------------     public String saveRole(Integer app_id) throws Exception { 
            //先插入,比如插入了10条 
            save(); 
          conn.commitTrans(); //提交
          //再查询,这时查不到刚才插入的10条 
            getUserRole(); 
    } 
中间提交一下事务就可以
为什么要再去查一次呢,你前面保存的时候不是有数据吗,直接拿过来用不就得了,你以为查一次数据库性能不会差一点吗
--------------------编程问答-------------------- 楼上正解,保存之后一定要提交. --------------------编程问答--------------------
引用 楼主 xiaobadi 的回复:
我对楼主头像很感兴趣,叫什么?
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,