4
回答
我在service里面定义了一个update方法,find方法,先调用update在调用find,查询到的数据是修改前的,但是数据库中的数据已经修改
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   
    今天碰到一个比较饶的问题,我在service里面定义了一个update方法,修改表中的数据,和另外一个find方法查询该数据库的数据,
然后在action中先一个方法,方法中先引用update,在引用find方法,离奇的事情发生了,数据库的数据改变了,但是查询到的数据居然是
修改前的。。。
下面是我的代码
update方法
public void updatePRelationFlag(String orderNo, String flag){
        StringBuffer sql = new StringBuffer();
        sql.append("update prelation r set r.flag='").append(flag).append("' where r.orderno='").append(orderNo).append("'");
        int i = super.getSession().createSQLQuery(sql.toString()).executeUpdate();
    }
find方法
    public PRelation findpPRelation(String payNo){
        StringBuffer sql = new StringBuffer();
        sql.append("select * from prelation r where payno = :payNo");
        List<PRelation> policys = super.getSession().createSQLQuery(sql.toString()).addEntity(PRelation.class).setString("payNo", payNo).list();
        return policys.get(0);
    }
action中调用顺序:
public String actionMe(){
    oService.updatePolicyRelationFlag("02010101","02");
    oService.findProPolicyRelation("0200201002");

}
当我只查询表中的一个字段时,查询到的数据是修改后的
update方法
public void updatePRelationFlag(String orderNo, String flag){
        StringBuffer sql = new StringBuffer();
        sql.append("update prelation r set r.flag='").append(flag).append("' where r.orderno='").append(orderNo).append("'");
        int i = super.getSession().createSQLQuery(sql.toString()).executeUpdate();
    }
find方法
    public String findFlag(String payNo){
        StringBuffer sql = new StringBuffer();
        sql.append("select r.flag from prelation r where payno = :payNo");
        List<Object> flagOs = super.getSession().createSQLQuery(sql.toString()).setString("payNo", payNo).list();
        return flagOs.get(0).toString();
    }
action中调用顺序:
public String actionMe(){
    oService.updatePolicyRelationFlag("02010101","02");
    oService.findFlag("0200201002");

}
是因为修改时用的sql语句,而查询用的对象查询吗?哪位高手可以帮助解释一下,非常感谢!!!
<无标签>
举报
顶部