我现在要对某条记录进行修改,在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了会报异常
如代码:
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了会报异常
你从数据库重新查询出来 进行比较就好了
改为:
if(!isNew){
resourceDao.getSession().evict(resource);
Resc resc = resourceDao.get(resource.getResourceId());
path = resc.getPath();
}
resourceDao.getSession().clear();
resourceDao.save(resource);
就可以了.关键还是在于resource的三种状态的转变问题,理解的透彻一些就好了.