hibernate修改数据库后的不能在本地更新的问题!!

03-07-31 lzmch

在hibernate中用以下语句修改纪录:

    BranchForm form=(BranchForm)actionForm;
    net.sf.hibernate.Session session=form.getSession();
    Branch branch=(Branch)session.load(Branch.class,form.getBranchNo());
    BeanUtils.copyProperties(branch, form);
    session.update(branch);

<p>

提交数据库后,在数据库中查,纪录确实被修改了,但是用以下代码查看,发现还是原来的数据!请问大家怎样解决?

    java.util.List list=session.find("from Branch branch");
    java.util.Iterator iter=list.iterator();
    Branch branch=null;
    while(iter.hasNext()){
      branch=(Branch)iter.next();
      System.out.println(branch.getBranchNo()+ new String(branch.getBranchName().getBytes("8859_1"),"gb2312"));
    }
<p>

muziq
2003-07-31 08:42

你不会是没有提交吧?

lzmch
2003-07-31 08:57

> 你不会是没有提交吧?

我的提交是在外边写的,肯定提交了,因为数据库中已经更新了!只是hibernate提取的仍然是原来的数据!

lzmch
2003-07-31 09:19

在取出数据后加上一句refresh()后显示正确的数据了。但是这样是否正常?

    java.util.List list=session.find("from Branch branch");
    java.util.Iterator iter=list.iterator();
    Branch branch=null;
    while(iter.hasNext()){
      branch=(Branch)iter.next();
      session.refresh(branch);
      System.out.println(branch.getBranchNo()+ new String(branch.getBranchName().getBytes("8859_1"),"gb2312"));
    }
<p>

yadan
2003-07-31 09:42

我用hibernate作更新没有这样的问题啊。

我猜测是不是你的update和find在同一个session中的原因,在update语句后加上session.flush(); 试试。我只是猜测而以,说得不对请别见笑。建议你打开sql语句看看是不是正常。

2Go 1 2 下一页