a different object with the same identifier value was already associated with the session
// 内存中的对象和数据库中的对象都使用同一个标识,但他们不是同一个对象
SearchEntity pEntityu = new SearchEntity();
pEntityu.addSearch("resId", resIdstemp, "in");
pEntityu.addSearch("status", "1", "=");
List<SysResource> listRes = sysResourceService.getPage(pEntityu);
List<SysResource> tempcList = new ArrayList<SysResource>();
List<SysPrivilege> temppList = new ArrayList<SysPrivilege>();
for (SysResource nowRes : listRes) {
SysResource parRes = nowRes.getSysResource();
Set<SysPrivilege> privilege = nowRes.getSysPrivileges();
for (Iterator pmm = privilege.iterator(); pmm.hasNext();) {
temppList.add((SysPrivilege) pmm.next());
}
for (SysPrivilege p : temppList) {
nowRes.getSysPrivileges().remove(p);
}
if(parRes==null){
nowRes.setSysResources(null);
}else {
nowRes.setSysResource(null);
}
sysResourceService.update(nowRes);
SearchEntity pEntity = new SearchEntity();
pEntity.addSearch("priviId", privilegeidtemp, "in");
pEntity.addSearch("status", "1", "=");
List<SysPrivilege> listPrivilege = sysPrivilegeService
.getPage(pEntity);
if(parRes==null){
for (SysPrivilege pchild3 : listPrivilege) {
nowRes.getSysPrivileges().add(pchild3);
pchild3.getSysResources().add(parRes);
sysPrivilegeService.update(pchild3);
}
}else {
for (SysPrivilege pchild3 : listPrivilege) {
nowRes.getSysPrivileges().add(pchild3);
Set<SysResource> set=pchild3.getSysResources();
for (Iterator ss = set.iterator(); ss.hasNext();) {
tempcList.add((SysResource) ss.next());
}
for (SysResource r : tempcList) {
if(r!=null){
System.out.println(r.getSysResource());
nowRes.setSysResource(r.getSysResource());
pchild3.getSysResources().add(nowRes);
}
}
pchild3.getSysResources().add(nowRes);
sysPrivilegeService.update(pchild3);
}
}
sysResourceService.update(nowRes);
}