Problemas na tentativa de aprender Hibernate [resolvido]

8 respostas
InSeOfKn

Ola! sou novo em Hibernate (muito novo comecei a estudar ontem) mas estou tendo uma enorme dificuldade.

bom para começar a aprender eu baixei o Hibernate 3.6 e criei a seguinte tabela no banco de dados H2
+------------------------------+
|--------Enderecos----------|
+------------------------------+
| id : Bigint (PK)-------------|
| cep : Varchar(10)---------|
| endereco : Varchar(255)|
| email : Varchar(255)-----|
+------------------------------+

coloquei os seguintes jars no Buider na lib do eclipse

hibernate3.jar
antlr-2.7.6.jar
commons-collections-3.1.jar
dom4j-1.6.1.jar
hibernate-annotation.jar
ejb3-persistence.jar
slf4j-api-1.6.1.jar
h2-1.2.144.jar //drive do BD
//adicionei mais esses jars e não funcionou
javassist-3.12.0.GA.jar
jta-1.1.jar

e criei a seguinte class anotada

@Entity
public class Enderecos {
	@Id
	@GeneratedValue(strategy = GenerationType.SEQUENCE)
	private Long id;
	private String cep;
	private String endereco;
	private String email;
	
	public Enderecos() {}
	
	//getters e setter omitidos
	
}

e a seguinte class de teste

public class Listagem12 {
	public static void main(String[] args) {
		//Cria objeto que receberá as configurações
		Configuration cfg = new AnnotationConfiguration();
		//Informe o arquivo XML que contém a configurações
		cfg.configure("hibernate.cfg.xml");
		//Cria uma fábrica de sessões.
		//Deve existir apenas uma instância na aplicação
		SessionFactory sf = cfg.buildSessionFactory();
		// Abre sessão com o Hibernate
		Session session = sf.openSession();
		//Cria uma transação
		Transaction tx = session.beginTransaction();
		// Cria objeto Aluno
		Enderecos endereco = new Enderecos();
		endereco.setCep("96225-000");
		endereco.setEndereco("Luiz José Gauterio");
		endereco.setEmail("[email removido]");
		session.save(endereco); // Realiza persistência
		tx.commit(); // Finaliza transação
		session.close(); // Fecha sessão
	}
}

e coloquei na rais do projeto o xml de configuração hibernate.cfg.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
	<session-factory>
		<!-- properties -->
		<property name="connection.driver_class">
			org.h2.Driver
		</property>
		<property name="connection.url">
			jdbc:h2:~/gerenciador
		</property>
		<property name="dialect">
			org.hibernate.dialect.H2Dialect
		</property>
		<property name="show_sql">true</property>
		<property name="connection.username">SA</property>
		<property name="connection.password"></property>
		<property name="connection.pool_size">10</property>
		<!-- mapping classes -->
		<mapping class="tabelasDB.Enderecos"/>
	</session-factory>
</hibernate-configuration>

mas quando e executo a class de teste ele exibe esse erro

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Exception in thread "main" org.hibernate.HibernateException: hibernate.cfg.xml not found
	at org.hibernate.util.ConfigHelper.getResourceAsStream(ConfigHelper.java:170)
	at org.hibernate.cfg.Configuration.getConfigurationInputStream(Configuration.java:2146)
	at org.hibernate.cfg.Configuration.configure(Configuration.java:2127)
	at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:211)
	at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:70)
	at Listagem12.main(Listagem12.java:16)

não sei o que pode ser já li o endereço http://www.slf4j.org/codes.html#StaticLoggerBinder que o erro mostra mas ele diz que esta faltando o jar slf4j-api-1.6.1.jar mas ele esta la com toda certeza

procurei por esse erro o dia todo mas não sai do lugar
aguardo resposta e agradeço desde já
até!

8 Respostas

Tiburcio_Mancha

Na vdd seu erro é esse:

seu hibernate.cfg.xml está mesmo no src do projeto?

InSeOfKn

sim esta olha a estrutura do meu projeto

gerenciador Hibernate
—Listagem12
—tabelasDB
------Enderecos
—hibernate.cfg.xml

L

Concordo com o tiburcio… o hibernate não está achando o .cfg

InSeOfKn

Obrigado Tiburcio_Mancha
mudei de lugar o hibernte.cfg.xml (ele tava na pasta do projeto e não no src)

mas mesmo assim continua sem funcionar mas o erro mudou totalmente

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. Exception in thread "main" java.lang.NoClassDefFoundError: javax/persistence/Cacheable at org.hibernate.cfg.AnnotationBinder.determineCacheSettings(AnnotationBinder.java:988) at org.hibernate.cfg.AnnotationBinder.bindClass(AnnotationBinder.java:579) at org.hibernate.cfg.Configuration$MetadataSourceQueue.processAnnotatedClassesQueue(Configuration.java:3977) at org.hibernate.cfg.Configuration$MetadataSourceQueue.processMetadata(Configuration.java:3931) at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1368) at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1826) at Listagem12.main(Listagem12.java:19) Caused by: java.lang.ClassNotFoundException: javax.persistence.Cacheable at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 7 more
se souberem o que pode ser agradeço!

InSeOfKn

consegui resolvi esse mas agora meu problema é outro

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. Hibernate: call next value for hibernate_sequence Exception in thread "main" org.hibernate.exception.GenericJDBCException: could not get next sequence value at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:140) at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:128) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) at org.hibernate.id.SequenceGenerator.generateHolder(SequenceGenerator.java:132) at org.hibernate.id.SequenceHiLoGenerator$1.getNextValue(SequenceHiLoGenerator.java:86) at org.hibernate.id.enhanced.OptimizerFactory$LegacyHiLoAlgorithmOptimizer.generate(OptimizerFactory.java:351) at org.hibernate.id.SequenceHiLoGenerator.generate(SequenceHiLoGenerator.java:83) at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:121) 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:713) at org.hibernate.impl.SessionImpl.save(SessionImpl.java:701) at org.hibernate.impl.SessionImpl.save(SessionImpl.java:697) at Listagem12.main(Listagem12.java:29) Caused by: org.h2.jdbc.JdbcSQLException: Sequence "HIBERNATE_SEQUENCE" not found; SQL statement: call next value for hibernate_sequence [90036-144] at org.h2.message.DbException.getJdbcSQLException(DbException.java:327) at org.h2.message.DbException.get(DbException.java:167) at org.h2.message.DbException.get(DbException.java:144) at org.h2.command.Parser.readSequence(Parser.java:4550) at org.h2.command.Parser.readTerm(Parser.java:2363) at org.h2.command.Parser.readFactor(Parser.java:1930) at org.h2.command.Parser.readSum(Parser.java:1917) at org.h2.command.Parser.readConcat(Parser.java:1890) at org.h2.command.Parser.readCondition(Parser.java:1755) at org.h2.command.Parser.readAnd(Parser.java:1736) at org.h2.command.Parser.readExpression(Parser.java:1728) at org.h2.command.Parser.parseCall(Parser.java:3759) at org.h2.command.Parser.parsePrepared(Parser.java:312) at org.h2.command.Parser.parse(Parser.java:274) at org.h2.command.Parser.parse(Parser.java:246) at org.h2.command.Parser.prepare(Parser.java:200) at org.h2.command.Parser.prepareCommand(Parser.java:213) at org.h2.engine.Session.prepareLocal(Session.java:425) at org.h2.engine.Session.prepareCommand(Session.java:375) at org.h2.jdbc.JdbcConnection.prepareCommand(JdbcConnection.java:1052) at org.h2.jdbc.JdbcPreparedStatement.<init>(JdbcPreparedStatement.java:71) at org.h2.jdbc.JdbcConnection.prepareStatement(JdbcConnection.java:233) at org.hibernate.jdbc.AbstractBatcher.getPreparedStatement(AbstractBatcher.java:534) at org.hibernate.jdbc.AbstractBatcher.prepareSelectStatement(AbstractBatcher.java:145) at org.hibernate.id.SequenceGenerator.generateHolder(SequenceGenerator.java:110) ... 13 more
sei que ele não esta conseguindo adicionar um no valor da PK mas como poderia resolver isso??

Tiburcio_Mancha

Está errado o mapeamento da sua chave primária. Da uma pesquisada direito nisso e ve como a sua PK está criada na base para poder mapea-la corretamente!

InSeOfKn

Oi!
Andei pesquisando sobre oque você me disse e na maioria dos lugares que li dizia pra trocar a linha

@GeneratedValue(strategy = GenerationType.SEQUENCE)

para

@GeneratedValue(strategy = GenerationType.IDENTITY)

mas não funciono

dai surgiu uma divida a PK tem que ser alto-icrement no banco ou essa parte quem cuida é o hibernate??
vou continuar na pesquisa!

InSeOfKn

Obrigado a todos!! até que um dia consegui (quase desisti)
acho que o meu erro era no mapiamento pois alterei o xml de configuração para o hibernate criar as tabelas e tudo passou a correr bem!
Obrigado a todos por dar atenção a um iniciante!

Criado 13 de dezembro de 2010
Ultima resposta 14 de dez. de 2010
Respostas 8
Participantes 3