os586 2010-11-21 11:59 采纳率: 0%
浏览 404
已采纳

hibernate 修改数据时,修改前的值与修改中的值的比较

我现在要对某条记录进行修改,在Serivce中,从action中传递过来了记录的实体,
如代码:
public void saveResource(Resc resource) {
//要进行分开,A->是新增资源,B->修改资源 两种情况在刷新缓存情况不同
boolean isNew = (resource.getResourceId() == null);
String path = "";

    resourceDao.getSession().clear();
    resourceDao.save(resource);
    if(!isNew){
        Resc resc = resourceDao.get(resource.getResourceId());
        path = resc.getPath();
        resourceDao.getSession().evict(resc);           

    }

     }

此处我想把数据表中要修改的记录中path这个字段值与正要修改的页面上传递过来的resource.getPath()进行比较

但是我得到的两个值都是相同的.其中数据表中的值与页面上的值不同,但是通过我的取值却是相同的,我该怎么处理?
如果resourceDao.getSession.evict(resource)取到的值到是不同了,但是我后面要用到resource中的roles集合,如果evict了会报异常

  • 写回答

5条回答 默认 最新

  • ethenjean 2010-11-22 12:01
    关注

    其实解决问题的根本在于对get、evict、clear方法的理解,如果掌握了这几个方法与缓存之间的关系,再结合业务逻辑,很容易就能找到解决办法。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog