Pessoal,
estou com um pequeno problema em um dos sistemas aqui. Assim, o sistema quando inicia o menu dele é carregado a depender do perfil do usuário, só que existe no banco uma tabela chamada menu, onde tem 4 itens e cada item desse tem seus sub-itens. O problema é que se para um determinado usuário for marcado no perfil dele as suas devidas permissões e nelas não conter nenhum dos 4 itens, o menu não é exibido.
query = this.entityManager.createQuery("SELECT m FROM Menu AS m JOIN FETCH m.funcionalidade AS f JOIN f.papeis AS p WHERE f.funcionalidadePai is null AND p.id = :idPapel ORDER BY m.ordemMenu");
query.setParameter("idPapel", usuario.getPapel().getId());
List<Menu> menu = query.getResultList();
this.entityManager.flush();
this.entityManager.clear();
for (Menu m : menu) {
Funcionalidade funcionalidade = m.getFuncionalidade();
query = this.entityManager.createQuery("SELECT f FROM Funcionalidade f JOIN f.papeis AS p WHERE f.funcionalidadePai = :funcionalidade AND p.id = :idPapel ORDER BY f.nome");
query.setParameter("idPapel", usuario.getPapel().getId());
query.setParameter("funcionalidade", funcionalidade);
funcionalidade.setFuncionalidadesFilhas(query.getResultList());
}
return menu;
}
esse é o cógio do Dao.
A chamada desse método ai vem desse código:
Map<String, List<Funcionalidade>> mapMenus = new TreeMap<String, List<Funcionalidade>>();
List<Menu> menus = menuDao.getByUsuario(usuario);
for (Menu menu : menus) {
mapMenus.put(menu.getNome(), menu.getFuncionalidade().getFuncionalidadesFilhas());
}
Algúem pode me da uma ajuda?