HUmmm… . vc tah fazendo alguma operação q faz com q o hibernate feche a conexão, posta o seu código pra eu dar uma olhada…
H
henriqueor
este é o meu método que está dando erro…
privatevoidcadastraNovoCC(Clienteportalcli,StringccNome,StringccDesc,StringccRegi)throwsRegionalInexistenteException,Exception{Centrocustocc=newCentrocusto();// preenche dados do centro de custocc.setNome(ccNome.trim().toUpperCase());cc.setDescricao(ccDesc.trim().toUpperCase());List<Regional>listregional=regionalGerenciador.getRegionalCadCC(cli.getId(),ccRegi);Regionalregional=newRegional();if(listregional==null||listregional.size()==0){logger.error("Razao: Regional não existe: "+ccRegi);thrownewRegionalInexistenteException("Regional não existe.");}else{regional=listregional.get(0);}cc.setRegional(regional);cc.setClienteportal(cli);cc.setAtivo(true);cc.setDatacad(newDate());// verifica se já existe este ccif(centroCustoGerenciador.getCentrocusto(cli.getId(),cc.getNome())!=null){System.out.println("Centro de custo já cadastrado.");thrownewException("Centro de custo já cadastrado");}try{centroCustoGerenciador.beginTransaction();// abre transacaocentroCustoGerenciador.salvar(cc);// salva centro de custo//centroCustoGerenciador.commitTransaction(); // efetua commit da transacao ***********Erro aqui}catch(org.hibernate.exception.ConstraintViolationExceptione){logger.error("Erro: "+e.getMessage()+"\nRazao: Centro de custo já cadastrado: "+cc.getNome());//centroCustoGerenciador.rollbackTransaction(); ***********Erro aqui }catch(Exceptione){logger.fatal("Erro: "+e.getMessage());//centroCustoGerenciador.rollbackTransaction(); ***********Erro aqui}}
precisa do código em que eu crio a session?
jonatascp
Se por acaso seu problema ainda não foi resolvido, coloca o código da session aqui também, pois o que está acontecendo é que a session está sendo fechada antes do commit.
H
henriqueor
Eu estou utilizando o mentawai portando nesse método eu estou buscando uma instancia dos objetos no ApplicationManager.
publicbooleaninjectDependency(){try{// capturando instancias dos DAOsclienteGerenciador=(ClienteGerenciador)ApplicationManager.getInstance().getComponent("clienteGerenciador").getInstance();centroCustoGerenciador=(CentroCustoGerenciador)ApplicationManager.getInstance().getComponent("centroCustoGerenciador").getInstance();regionalGerenciador=(RegionalGerenciador)ApplicationManager.getInstance().getComponent("regionalGerenciador").getInstance();usuariorequisicaoGerenciador=(UsuariorequisicaoGerenciador)ApplicationManager.getInstance().getComponent("usuariorequisicaoGerenciador").getInstance();perfilGerenciador=(PerfilGerenciador)ApplicationManager.getInstance().getComponent("perfilGerenciador").getInstance();usuarioGerenciador=(UsuarioGerenciador)ApplicationManager.getInstance().getComponent("usuarioGerenciador").getInstance();solicitantesccGerenciador=(SolicitantesccGerenciador)ApplicationManager.getInstance().getComponent("solicitantesccGerenciador").getInstance();aprovadoresccGerenciador=(AprovadoresccGerenciador)ApplicationManager.getInstance().getComponent("aprovadoresccGerenciador").getInstance();// capturando instancia do DAO geraldao=(DaoGenericoInterface)ApplicationManager.getInstance().getComponent("dao").getInstance();// criando session do hibernatesession=HibernateUtil.getSessionFactory().getCurrentSession();// injetando a session no dao geraldao.setSession(session);// injetando o dao geral nos daos especificosclienteGerenciador.setDao(dao);centroCustoGerenciador.setDao(dao);regionalGerenciador.setDao(dao);usuariorequisicaoGerenciador.setDao(dao);perfilGerenciador.setDao(dao);usuarioGerenciador.setDao(dao);solicitantesccGerenciador.setDao(dao);aprovadoresccGerenciador.setDao(dao);// injetado com sucessoisInjected=true;logger.info("Dependencias injetadas");}catch(HibernateExceptione){e.printStackTrace();isInjected=false;returnfalse;}catch(InstantiationExceptione){e.printStackTrace();isInjected=false;returnfalse;}returntrue;}
e a classe HibernateUtil abaixo :
importorg.hibernate.*;importorg.hibernate.cfg.*;publicclassHibernateUtil{privatestaticfinalSessionFactorysessionFactory;static{try{// Create the SessionFactory from hibernate.cfg.xml//sessionFactory = new Configuration().configure().buildSessionFactory();sessionFactory=newAnnotationConfiguration().configure("hibernate.cfg.xml").buildSessionFactory();}catch(Throwableex){// Make sure you log the exception, as it might be swallowedSystem.err.println("Initial SessionFactory creation failed."+ex);thrownewExceptionInInitializerError(ex);}}publicstaticSessionFactorygetSessionFactory(){returnsessionFactory;}}
provavelmente deve ser alguma coisa boba…
mas não estou conseguindo ver… rs