Existe a possibilidade de guardar o valor de uma FK na sessao ?
Exemplo:
Eu fiz um cadastro, gerou um valor para a FK(salvei essa fk na tabela).
Eu armazendo esse valor na sessao e fico usando esse valor ate o usuario fazer logoff.
E tenho q repetir o codigoRequisicao(FK) na tabela item_x_requisicao enquanto o usuario estiver logado…
Pq eu to inserindo uma requisicao de cada vez … Entenderam ? Eu tenho q repetir esse codigoRequisicao
por causa da normalizacao (banco de dados)… Eh mais ou menos isso!
O metodo salvar ja ta pronto, ta cadastrando certinho nas 2 tabelas, mas eh sempre um codigoRequisicao novo (cada vez q clico em salvar ).
Ai lembrei da ta sessao… Como eu faco isso ? To empacado no sistema q eu to fazendo. Resolvendo isso eu faco o resto tranquilo
Obrigado
tiago_
Meu meotodo salvar
publicStringsalvar(){ContextoBeancontextoBean=ContextoUtil.getContextoBean();FacesContextcontext=FacesContext.getCurrentInstance();UsuarioRNusuarioRN=newUsuarioRN();RequisicaoRNrequisicaoRN=newRequisicaoRN();ItemRNitemRN=newItemRN();ItemRequisicaoRNitemRequisicaoRN=newItemRequisicaoRN();StatusRNstatusRN=newStatusRN();ItemRequisicaoitemRequisicao=newItemRequisicao();/* * Salvando na tabela requisicao *///pega objeto usuario (usuarioLogado)UsuariousuarioLogado=usuarioRN.buscarPorLogin(contextoBean.getUsuarioLogado().getLogin());//getUsuarioLogadoSystem.out.println("objeto usuario: "+usuarioLogado);requisicao.setUsuario(usuarioLogado);//Nova requisicao -> codigoStatus sempre = 1codigoPendente="pendente";StatuscodigoStatus=statusRN.buscarPorNome(getCodigoPendente());System.out.println(getCodigoPendente());requisicao.setStatus(codigoStatus);//GetDatahora do computador do clienteLocalelocale=newLocale("pt","BR");GregorianCalendarcalendar=newGregorianCalendar();SimpleDateFormatformatador=newSimpleDateFormat("dd' de 'MMMMM' de 'yyyy' - 'HH':'mm'h'",locale);Stringdf=formatador.format(calendar.getTime());System.out.println(formatador.format(calendar.getTime()));requisicao.setDataHora(df);requisicaoRN.salvar(requisicao);/* * Salvando na tabela item_x_requisicao *///pega objeto item (item selecionado)ItemitemSelecionado=itemRN.buscarItem(itemBean.getItemm());System.out.println(itemSelecionado);itemRequisicao.setItem(itemSelecionado);// Pega codigo da requisicaoRequisicaocodigoRequisicaoAtual=requisicaoRN.buscarCodigoPendente(requisicao.getCodigo());System.out.println("Codigo requisicao:"+codigoRequisicaoAtual);itemRequisicao.setRequisicao(codigoRequisicaoAtual);//Pega quantidade solicitada (pagina)itemRequisicao.setQuantidadeSolicitada(qntSoli);//SaveitemRequisicaoRN.salvar(itemRequisicao);return"this.destinoSalvar";}
Veja q com isso - > Requisicao codigoRequisicaoAtual = requisicaoRN.buscarCodigoPendente(requisicao.getCodigo());
o metodo sempre vai pegando um codigo requisicao novo…
Como eu posso fazer do jeito q eu falei acima ? To quebrando a cabeca com isso : /
tiago_
Na verdade o q eu tenho q guardar na sessao eh um objeto do tipo “Requisicao” e nao o valor de uma variavel…
tiago_
Resolvido
publicStringsalvar(){ContextoBeancontextoBean=ContextoUtil.getContextoBean();FacesContextcontext=FacesContext.getCurrentInstance();HttpSessionsession=(HttpSession)context.getExternalContext().getSession(false);System.out.println("1"+session.getAttribute("ObjetoRequisicaoSessao"));UsuarioRNusuarioRN=newUsuarioRN();RequisicaoRNrequisicaoRN=newRequisicaoRN();ItemRNitemRN=newItemRN();ItemRequisicaoRNitemRequisicaoRN=newItemRequisicaoRN();StatusRNstatusRN=newStatusRN();ItemRequisicaoitemRequisicao=newItemRequisicao();// pega objeto usuario (usuarioLogado)UsuariousuarioLogado=usuarioRN.buscarPorLogin(contextoBean.getUsuarioLogado().getLogin());// getUsuarioLogadoSystem.out.println("objeto usuario: "+usuarioLogado);requisicao.setUsuario(usuarioLogado);// Nova requisicao -> codigoStatus sempre = 1codigoPendente="pendente";StatuscodigoStatus=statusRN.buscarPorNome(getCodigoPendente());System.out.println(getCodigoPendente());requisicao.setStatus(codigoStatus);// GetDatahora do computador do clienteLocalelocale=newLocale("pt","BR");GregorianCalendarcalendar=newGregorianCalendar();SimpleDateFormatformatador=newSimpleDateFormat("dd' de 'MMMMM' de 'yyyy' - 'HH':'mm'h'",locale);Stringdf=formatador.format(calendar.getTime());System.out.println(formatador.format(calendar.getTime()));requisicao.setDataHora(df);if(session.getAttribute("ObjetoRequisicaoSessao")==null){requisicaoRN.salvar(requisicao);session.setAttribute("ObjetoRequisicaoSessao",requisicao);//SetObjeto na sessao itemSelecionado=itemRN.buscarItem(itemBean.getItemm());System.out.println(itemSelecionado);itemRequisicao.setItem(itemSelecionado);itemRequisicao.setRequisicao((Requisicao)session.getAttribute("ObjetoRequisicaoSessao"));itemRequisicao.setQuantidadeSolicitada(qntSoli);itemRequisicaoRN.salvar(itemRequisicao);return"this.destinoSalvar";}elseitemSelecionado=itemRN.buscarItem(itemBean.getItemm());System.out.println(itemSelecionado);itemRequisicao.setItem(itemSelecionado);itemRequisicao.setRequisicao((Requisicao)session.getAttribute("ObjetoRequisicaoSessao"));itemRequisicao.setQuantidadeSolicitada(qntSoli);itemRequisicaoRN.salvar(itemRequisicao);return"this.destinoSalvar";}