@CacheNameRemove(name = AppConstants.DEFAULT_CACHENAME) @Before({AdminValidator.UpdateRoleValidator.class, Tx.class}) public void updateRole() { keepModel(UserRole.class); UserRole userRole = getModel(UserRole.class); boolean result = true; List<UserRole> aroles = UserRole.dao.findBy("`userRole`.user_id=" + userRole.get("user_id")); boolean mustAdd = true; if (!ValidateUtils.me().isNullOrEmpty(aroles)) { // delete for (UserRole ar : aroles) { if (ar.get("role_id") != userRole.get("role_id")) { ar.delete(); } else { mustAdd = false; } } } // add if (mustAdd) { result = result && userRole.save(); } if (result) setAttr("state", "success"); else setAttr("state", "failure"); dynaRender("/view/admin/user.ftl"); }