Metodo save da classe SessionFactory dando pau

10 respostas
herbertins

galera a minha classe funciona direitinho ateh chegar no metodo save(c), ela gera uma exception estranha

essa

Code:

[color=red]Exception in thread "main" org.hibernate.exception.SQLGrammarException: could not insert: [br.com.casa.classes.Cliente][/color]

package br.com.casa.dao;
 
 import org.hibernate.Session;
 import org.hibernate.SessionFactory;
 import org.hibernate.cfg.AnnotationConfiguration;
 
 import br.com.casa.classes.Cliente;
 
 public class ClienteDAO {
 	
 	private Session session;
 	private SessionFactory factory;
 	
 	public ClienteDAO(){ 
 		AnnotationConfiguration conf = new AnnotationConfiguration();
 		conf.addAnnotatedClass(Cliente.class);
 		factory = conf.buildSessionFactory();	
 	}
 	
 	public void Adiciona(Cliente c){
 		session = factory.openSession();
 		session.save(c);
 		session.close(); 
 	}
 
 }

10 Respostas

plentz

Cole o stack trace completo.

herbertins

tah aiii cara essa coisa feia meu jah estou a dias aqui e nao conssigo resolver me dah um help ai por favor

[color=red]log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version).

log4j:WARN Please initialize the log4j system properly.

Exception in thread main org.hibernate.exception.SQLGrammarException: could not insert: [br.com.casa.classes.Cliente]

at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:67)

at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)

at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:40)

at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2108)

at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2588)

at org.hibernate.action.EntityIdentityInsertAction.execute(EntityIdentityInsertAction.java:48)

at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:248)

at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:290)

at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:180)

at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:108)

at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:186)

at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)

at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:175)

at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)

at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)

at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535)

at org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)

at org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)

at br.com.casa.dao.ClienteDAO.Adiciona(ClienteDAO.java:22)

at br.com.casa.classes.Inicio.main(Inicio.java:15)

Caused by: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Table cadastrohoras.cliente doesnt exist

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:936)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2870)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1665)

at com.mysql.jdbc.Connection.execSQL(Connection.java:3176)

at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1153)

at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1404)

at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1318)

at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1303)

at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:73)

at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:33)

 17 more[/color]
herbertins

codigo da minha classe cliente

package br.com.casa.classes;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;

@Entity
public class Cliente {
	@Id
	@GeneratedValue
	private int id;
	private String nome;
	private String descricao;
	
	public String getDescricao() {
		return descricao;
	}
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public int getId() {
		return id;
	}

}
jonataswingeter

Olá.

a sua tabela referente à classe cliente está configurada com id para usar sequence automático?

Att.

herbertins

oiiiii está simmmm

jonataswingeter

Olá.

Bem, olhando melhor seu stacktrace, percebi:

Table ‘cadastrohoras.cliente’ doesn’t exist.

  1. Verifique se sua tabela está realmente configurada no banco (parece óbvio);
  2. Verifique se você está conectando no banco de dados correto, talvez você está conectando ao banco de dados errado no MySQL (veja se ele não está usando o padrão Test);
  3. Verifique se o nome da tabela está configurada corretamente no arquivo .hbm.

Att.

herbertins

cara, acho que descobri oq está rolando haushdusad, puta cara estava cagando feio no código

a minha tabela nao tinha nada a ver com a minha classe tipo os nomes dos campos totalmente diferentes. fodaaa…

vo arrumar aqui e ve se roda

herbertins

aewww brother valew, graças a sua primeira pergunta eu conssegui, agora soh tem uma coisinha eu rodo na boa nao dah nenhum erro soh que quando eu vo no banco de dados nao está lah os valores, estranho neh

vo ve aqui

valew cara abs

herbertins

cara tu tem ideia do que pode está acontecendo que não está salvando no banco.

abs

herbertins

Resolvidoooo galera valew a todoss

abs

Criado 31 de janeiro de 2007
Ultima resposta 31 de jan. de 2007
Respostas 10
Participantes 3