TesteDAO

4 respostas
C

Galera,
eu possuo um SAL(Sistem de Administraçaõ de Leilão),criei uma classe TesteDAO
tenho minhas entidades tudo ok mas deu o seguinte erro

log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).
log4j:WARN Please initialize the log4j system properly.
Hibernate: /* insert Base.Entidades.Endereco */ insert into Endereco (bairro, cep, cidade, complemento, logradouro, numero, uf) values (?, ?, ?, ?, ?, ?, ?)
Hibernate: /* insert ModuloAdministracao.Entidades.Leiloeiro */ insert into Leiloeiro (celular, cpf, dataNascimento, email, idEnd, nome, rg, telefone, idCnt, emailComercial, idEndComercial, foneComercial, matricula, portaria, senha) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
org.hibernate.exception.SQLGrammarException: could not insert: [ModuloAdministracao.Entidades.Leiloeiro]
	at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:90)
	at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66)
	at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:64)
	at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2186)
	at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2666)
	at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:71)
	at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:279)
	at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:321)
	at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:204)
	at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:130)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
	at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
	at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
	at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:562)
	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:550)
	at org.hibernate.impl.SessionImpl.save(SessionImpl.java:546)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:342)
	at $Proxy20.save(Unknown Source)
	at ModuloAdministracao.Teste.TesteDAO.main(TesteDAO.java:70)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'idEnd' in 'field list'
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
	at java.lang.reflect.Constructor.newInstance(Unknown Source)
	at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
	at com.mysql.jdbc.Util.getInstance(Util.java:381)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1030)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3491)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3423)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1936)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2060)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2542)
	at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1734)
	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2019)
	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1937)
	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1922)
	at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:94)
	at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:57)
	... 22 more
Exception in thread "main" org.hibernate.SessionException: Session was already closed
	at org.hibernate.impl.SessionImpl.close(SessionImpl.java:302)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:342)
	at $Proxy20.close(Unknown Source)
	at ModuloAdministracao.Teste.TesteDAO.main(TesteDAO.java:77)

4 Respostas

pmlm
rdgms

Porque usar DAO com uma framework que ja implementa DAO??
perder todo o poder da ORM?? abstrair mais doque ja esta?

C

Quase resolvido
Eu fiz o seguinte

package ModuloAdministracao.Teste;

import java.util.Date;

import org.hibernate.HibernateException;
import org.hibernate.Transaction;
import org.hibernate.classic.Session;

import Base.Entidades.Endereco;
import Base.Persistencia.HibernateUtil;
import ModuloAdministracao.Entidades.Leiloeiro;
import ModuloAdministracao.Persistencia.Leiloeiro.LeiloeiroDAOHibernate;

public class TesteDAO {
		
	
	public static void main(String args[]) {
		
		Session sessao = HibernateUtil.getSessionFactory().getCurrentSession();
		Transaction tr = sessao.beginTransaction();
		LeiloeiroDAOHibernate leiloeiroDAO= new LeiloeiroDAOHibernate();
		
		try{
		Date dataNascimento = new Date();
		Endereco end = new Endereco();
	 	Endereco endCom = new Endereco();
	 		 	
	 	//Leiloeiro		
		Leiloeiro leiloeiro = new Leiloeiro();
		leiloeiro.setNome("José");
		leiloeiro.setLeiloes(null);
	    leiloeiro.setEnderecoEscritorio(endCom);
		leiloeiro.setCelular("9999-8888");
		leiloeiro.setDataNascimento(dataNascimento);
		leiloeiro.setEmail("[email removido]");
		leiloeiro.setEmailComercial("[email removido]");
		leiloeiro.setFoneComercial("3333-4444");
		leiloeiro.setTelefone("3333-5555");
		leiloeiro.setSenha("********");
		leiloeiro.setRg("2221234-44");
		leiloeiro.setPortaria("34");
		leiloeiro.setMatricula("AB0123");
	 	
	  	//Endereço Comercial
	 	endCom.setBairro("Caxanga");
	 	endCom.setCep(52020-220);
	 	endCom.setCidade("Recife");
	 	endCom.setComplemento(null);
	 	endCom.setLogradouro("Avenida Caxanga");
		endCom.setNumero(422);
		endCom.setUf("PE");
	 	//Endereço
	 	end.setBairro("Imbiribeira");
	 	end.setCep(54130-170);
	 	end.setCidade("Recife");
	 	end.setComplemento(null);
		end.setLogradouro("Avenida Mascarenhas de Moraes");
		end.setNumero(468);
		end.setUf("PE");
		
		leiloeiroDAO.salvarOuAtualizar(leiloeiro);
		System.out.println("inserção ok");
		
	    tr.commit();
		} catch (HibernateException e) {
			if (tr != null) {
				System.out.println("Motivo ..." + e.getMessage());
				e.printStackTrace();
				tr.rollback();
			}
		} finally {
			if (sessao != null && sessao.isOpen()) {
				sessao.close();
			}
		}
	}
}

so que ele nao esta inseridno no BD

rdgms

pode estar faltando o Commit na transaction

Criado 21 de abril de 2010
Ultima resposta 21 de abr. de 2010
Respostas 4
Participantes 3