Erro - hibernate

9 respostas
P

Não está salvando no Banco

public  void inserir(TbEventos evento){
    	Session sessao = HibernateUtility.getSession();
		Transaction tx = sessao.beginTransaction();
		System.out.println("abriu transação");
		sessao.save(evento);
		System.out.println("inseriu");
		tx.commit();
		System.out.println("comit");
		sessao.close();
    }

O select está funcionando normalmente , porem , não da commit , nem fecha a sessão
O unico print que deu foi System.out.println(“abriu transação”);

9 Respostas

Leandro_BSB

E não tem nenhuma mensagem no log? Posta a classe HibernateUtility para darmos uma olhada.

[]s

Leandro

P

o erro é esse… agora
o erro…

abriu transação
inseriu
Hibernate: /* insert hibernate.TbEventos */ insert into IBICT_FS.TB_EVENTOS (EVE_NOME, EVE_SIGLA, EVE_DT_INSC_INICIO, EVE_DT_INSC_FIM, EVE_URL, EVE_LOCAL, EVE_TEMA, EVT_ID, EVE_ID_PARALELO, ARC_CODIGO, PAIS_SIGLA, UF_REGIAO, UF_SIGLA, EVE_SITUACAO, EVE_DT_INICIO, EVE_DT_FIM, EVE_AUTORIZA_WEB, EVE_CARGA_HORARIA, EVE_OBS, INS_ID, EVE_CIDADE, EVE_ABRANGENCIA, EVE_RESPONSAVEL, USB_ID, EVE_NR, EVE_DT_INCLUSAO, EVE_ID) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
2006-07-21 10:08:52,156 WARN  struts.action.RequestProcessor  -> Unhandled Exception thrown: class java.lang.ClassCastException
2006-07-21 10:08:54,078 WARN  hibernate.jdbc.ConnectionManager  -> unclosed connection, forgot to call close() on your session?
2006-07-21 10:08:54,078 WARN  hibernate.jdbc.ConnectionManager  -> unclosed connection, forgot to call close() on your session?

o metodo que salva

public  void inserir(TbEventos evento){
    	Session sessao = HibernateUtility.getSession();
		Transaction tx = sessao.beginTransaction();
		System.out.println("abriu transação");
		sessao.save(evento);
		System.out.println("inseriu");
		tx.commit();
		System.out.println("comit");
		sessao.close();
    }

Obrigado

Leandro_BSB

aparentemente, está ocorrendo um erro no stuts:

Tente incluir o objeto sem utilizar o struts e veja se funciona.

[]s

Leandro

P

eu estou tentando fazer desta forma mesmo , sem o struts
veja :

tbEventos.setEveNome("Flavio");
        tbEventos.setEveSigla("MRR");
        tbEventos.setEveUrl("URL");
        tbEventos.setEveLocal("m");
        tbEventos.setEveTema("tema");
        tbEventos.setEveId(123);
        tbEventos.setEveIdParalelo(5);
        tbEventos.setArcCodigo("ssss");
        tbEventos.setPaisSigla("eua");
        tbEventos.setUfSigla("MG");
        tbEventos.setUfRegiao("NE");
        tbEventos.setEveSituacao("1");
        tbEventos.setEveAutorizaWeb("sim");
        tbEventos.setEveCargaHoraria("122");
        tbEventos.setEveObs("observacao");
        tbEventos.setInsId(5);
        tbEventos.setEveCidade("rio de janeiro");
        tbEventos.setEveAbrangencia("pablo");
        tbEventos.setEveResponsavel("joao");
        tbEventos.setUsbId(5);
        tbEventos.setEveNr("1111");
     
        
        TbEventosFacade facade = new TbEventosFacade();
        //facade.inserir(tbEventos);
        facade.salvar(tbEventos);

Grato

Leandro_BSB

E quais as mensagens do log?

P
aparece o seguinte erro no JSP
java.lang.ClassCastException: java.lang.Integer
	org.hibernate.type.LongType.set(LongType.java:40)
	org.hibernate.type.NullableType.nullSafeSet(NullableType.java:62)
	org.hibernate.type.NullableType.nullSafeSet(NullableType.java:39)
	org.hibernate.persister.entity.BasicEntityPersister.dehydrate(BasicEntityPersister.java:1617)
	org.hibernate.persister.entity.BasicEntityPersister.dehydrate(BasicEntityPersister.java:1594)
	org.hibernate.persister.entity.BasicEntityPersister.insert(BasicEntityPersister.java:1850)
	org.hibernate.persister.entity.BasicEntityPersister.insert(BasicEntityPersister.java:2200)
	org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:46)
	org.hibernate.engine.ActionQueue.execute(ActionQueue.java:239)
	org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:223)
	org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:136)
	org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:274)
	org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
	org.hibernate.impl.SessionImpl.flush(SessionImpl.java:730)
	org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:324)
	org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:86)
	hibernate.TbEventosFacade.salvar(TbEventosFacade.java:56)
	struts.InserirEventoAction.execute(InserirEventoAction.java:90)
	org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431)
	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236)
	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
	org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


note The full stack trace of the root cause is available in the Apache Tomcat/5.0.28 logs.


--------------------------------------------------------------------------------
Leandro_BSB

Aparentemente, você está tentando incluir um Integer onde era esperado um Long:

Dê uma olhada na linha 56 da classe TbEventosFacade:

[]s

Leandro

P

Realmente o problema era um integer sendo inserido onde esperava um Long , mas eu tive que alterar o XML do mapeamento do banco. mas agora estou com outro problema , fiz um select para pegar o maior valor da tabela.

public int getMaxIdInscricao(){ int maxValue = 0 ; Session sessao = HibernateUtility.getSession(); Transaction tx = sessao.beginTransaction(); Query select = sessao.createQuery("select max(ev.INS_ID) from TB_EVENTOS as ev"); select.setInteger("INS_ID",maxValue); tx.commit(); sessao.close(); return maxValue; }
eu preciso pegar o valor que foi retornado pela Query , mas nao encontrei um metodo getInteger

grato

Leandro_BSB

Segue um exemplo utilizando Native SQL Query:

Double max = (Double) sess.createSQLQuery(
				"select max(cat.weight) as maxWeight from cats cat").addScalar(
				"maxWeight", Hibernate.DOUBLE).uniqueResult();

Este exemplo está na página 153 da Hibernate Reference Documentation Version: 3.0.5

[]s

Leandro

Criado 21 de julho de 2006
Ultima resposta 21 de jul. de 2006
Respostas 9
Participantes 2