1、数据查询并缓存
public List<SysMenu> findListAllMenu() {
    List<SysMenu> menuList = CacheKit.get(CacheConst.cache_menu.getCacheKey(), "findListAllMenu");
    if (menuList.isEmpty()) {
        String sql = "select menu_id, menu_name, menu_url, parent_id, menu_auth from sys_menu order by parent_id asc";
        menuList = menu.find(sql);
        CacheKit.put(CacheConst.cache_menu.getCacheKey(), "findListAllMenu", menuList);
    }
    return menuList;
}当没有缓存时,debug返回结果显示为

2、service中对查询结果处理,例如,勾选已选菜单
public List<SysMenu> findAllMenuZtree(String rights) {
    List<SysMenu> allMenus = menuDao.findListAllMenu();
    for (SysMenu m : allMenus) {
        //根节点展开
        if ("0".equals(m.getStr("parent_id"))) {
            m.put("open", true);
        }
        //当前菜单是否勾选
        if (RightsHelper.testRights(rights, m.getStr("menu_id"))) {
            m.put("checked", true);
        }
    }
    return allMenus;
}问题就出在这里,当没有缓存时返回结果正常,处理之后数据也是正常的。当有缓存时,1步骤方法返回结果为之前已处理过的数据集合,debug结果为:

一脸懵逼,数据是在处理之前已经缓存了的,处理过后的数据怎么会跑到缓存里面去?求指点一下问题所在。
 项目:JFinal