[RESOLVIDO] Erro: org.hibernate.MappingNotFoundExcept / Hibernate

5 respostas
J

Boanoite

Galera, tou acompanha o livro Programao Java para web
estou com um problema no exercico de hibernate.
quando eu tento inserir os dados para o banco aparece esses erros
dei uma olhada pelo o que eu entendir o erro esta no mapeamento da classe no xml - hibernate.cfg.xml
que eh exatamente o endereco do meu package mais a classe
com.livro.capitulo3.crudxml
Contato

0 [main] INFO org.hibernate.cfg.Environment - Hibernate 3.5.2-Final
16 [main] INFO org.hibernate.cfg.Environment - hibernate.properties not found
16 [main] INFO org.hibernate.cfg.Environment - Bytecode provider name : javassist
16 [main] INFO org.hibernate.cfg.Environment - using JDK 1.4 java.sql.Timestamp handling
109 [main] INFO org.hibernate.cfg.Configuration - configuring from resource: hibernate.cfg.xml
109 [main] INFO org.hibernate.cfg.Configuration - Configuration resource: hibernate.cfg.xml
Criaçao inicial do objeto SessionFactory falhou. Erro: org.hibernate.MappingNotFoundException: resource: com/livro/capitulo3/crudxml/Contato.hbm.xml not found
Erro ao fechar operaçao de inserçao. Mensagem: null
188 [main] INFO org.hibernate.cfg.Configuration - Reading mappings from resource : com/livro/capitulo3/crudxml/Contato.hbm.xml
Exception in thread "main" java.lang.ExceptionInInitializerError
	at com.livro.capitulo3.conexao.HibernateUtil.buildSessionFactory(HibernateUtil.java:18)
	at com.livro.capitulo3.conexao.HibernateUtil.<clinit>(HibernateUtil.java:8)
	at com.livro.capitulo3.crudxml.ContatoCrudXML.salvar(ContatoCrudXML.java:15)
	at com.livro.capitulo3.crudxml.ContatoCrudXML.main(ContatoCrudXML.java:148)
Caused by: org.hibernate.MappingNotFoundException: resource: com/livro/capitulo3/crudxml/Contato.hbm.xml not found
	at org.hibernate.cfg.Configuration.addResource(Configuration.java:665)
	at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1679)
	at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1647)
	at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1626)
	at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1600)
	at org.hibernate.cfg.Configuration.configure(Configuration.java:1520)
	at com.livro.capitulo3.conexao.HibernateUtil.buildSessionFactory(HibernateUtil.java:13)
	... 3 more

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>
		<!-- Configuração da conexão com o banco MySQL e dialeto -->
		<property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property>
		<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
		<property name="connection.url">jdbc:mysql://localhost:3306/agenda</property>
		<property name="connection.username">root</property>
		<property name="connection.password">123</property>

		<!-- Usando as configurações do C3PO para pool de conexões -->
		<property name="c3po.min_size">5</property>
		<property name="c3po.max_size">20</property>
		<property name="c3po.timeout">300</property>
		<property name="c3po.max_statements">50</property>
		<property name="c3po.idle_test_period">3000</property>
		
		<!-- Configurações de debug -->
		<property name="show_sql">true</property>
		<property name="format_sql">true</property>
		<property name="generate_statistics">true</property>
		<property name="use_sql_comments">true</property>
		
		<mapping resource="com/livro/capitulo3/crudxml/Contato.hbm.xml"/>
			
 			</session-factory>
</hibernate-configuration>
Conexao
[code]package com.livro.capitulo3.conexao;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {

	private static final SessionFactory sessionFactory = buildSessionFactory();

	private static SessionFactory buildSessionFactory() {
		try {
			Configuration cfg = new Configuration();
			cfg.configure("hibernate.cfg.xml");
			return cfg.buildSessionFactory();
		} catch (Throwable e) {
			System.out
					.println("Criaçao inicial do objeto SessionFactory falhou. Erro: " + e);
			throw new ExceptionInInitializerError(e);
		}
	}

	public static SessionFactory getSessionFactory() {
		return sessionFactory;
	}
}
package com.livro.capitulo3.conexao;

import org.hibernate.classic.Session;

public class ConectaHibernateMySQL {
	public static void main(String[] args) {

		Session sessao = null;
		try {
			sessao = HibernateUtil.getSessionFactory().openSession();
			System.out.println("Conectou!!!");
		} finally {
			sessao.close();
		}
	}
}

5 Respostas

J

Contato

package com.livro.capitulo3.crudxml;

import java.sql.Date;

public class Contato {

	private int codigo;
	private String nome;
	private String telefone;
	private String email;
	private Date dataCadastro;
	private String observacao;

// get e set
Crud
package com.livro.capitulo3.crudxml;

import java.util.List;
import java.sql.Date;
import org.hibernate.*;

import com.livro.capitulo3.conexao.HibernateUtil;

public class ContatoCrudXML {

	public void salvar(Contato contato) {
		Session sessao = null;
		Transaction transacao = null;
		try {
			sessao = HibernateUtil.getSessionFactory().openSession();
			transacao = sessao.beginTransaction();
			sessao.save(contato);
			transacao.commit();
		} catch (HibernateException e) {
			System.out.println("Nao foi possivel inserir o contato. Erro: "
					+ e.getMessage());
		} finally {
			try {
				sessao.close();
			} catch (Throwable e) {
				System.out
						.println("Erro ao fechar operaçao de inserçao. Mensagem: "
								+ e.getMessage());
			}
		}
	}


	public static void main(String[] args) {
		ContatoCrudXML contatoCrudXML = new ContatoCrudXML();
		String [] nomes = {"Jardel", "Kennedy", "Alexander"};
		String [] fones = {"88895154", "01020304", "01020305"};
		String [] emails = {"[email removido]", "[email removido]", "[email removido]"};
		String [] observacoes = {"Novo Cliente", "Cliente em dia", "Ligar na quinta"};
		Contato contato = null;
		
		for(int i=0; i<nomes.length; i++)
		{
			contato = new Contato();
			contato.setNome(nomes[i]);
			contato.setTelefone(fones[i]);
			contato.setEmail(emails[i]);
			contato.setDataCadastro(new Date(System.currentTimeMillis()));
			contato.setObservacao(observacoes[i]);
			contatoCrudXML.salvar(contato);
		}
	}
}
R

Você adicionou o Contato.hbm.xml no mesmo pacote (diretório) que está a classe Contato?

J

Romarcio
muito obrigado cara, deu certo nao vir esse detalhe estava apenas no SRC e nao tinha colocado no diretorio do proprio package, tou começando agora com hibernate faltou experiencia, rsrs.

fica ae o topico para possiveis erros de alguem.
um abraço.

R

:thumbup:

J

Olá Pessoal,

Meu problema é bem parecido com o do Jardel. Já tentei colocar hibernate.cfg.xml na mesma pasta, SRC, da minha classe, mas o problema persiste. Se alguém puder me ajudar, estou enviando o código abaixo:

[code]<?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> 

<!-- Database connection settings --> 
<property name="connection.driver_class">com.mysql.jdbc.Driver</property> 
<property name="connection.url">jdbc:mysql://localhost:3306/biblioteca</property> 
<property name="connection.username">root</property> 
<property name="connection.password">165145jgr</property> 

<!-- JDBC connection pool (use the built-in) --> 
<property name="connection.pool_size">1</property> 

<!-- SQL dialect --> 
<property name="dialect">org.hibernate.dialect.MySQLDialect</property> 

<!-- Enable Hibernate's automatic session context management --> 
<property name="current_session_context_class">thread</property> 

<!-- Disable the second-level cache --> 
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> 

<!-- Echo all executed SQL to stdout --> 
<property name="show_sql">true</property> 

<!-- Drop and re-create the database schema on startup --> 
<property name="hbm2ddl.auto">update</property> 

<mapping resource="com.gontuseries.hibernate.Student_Info"/> 

</session-factory>
</hibernate-configuration>

Este é o erro que é retornado:

dez 09, 2014 6:09:27 PM org.hibernate.annotations.common.reflection.java.JavaReflectionManager
INFO: HCANN000001: Hibernate Commons Annotations {4.0.5.Final}
dez 09, 2014 6:09:27 PM org.hibernate.Version logVersion
INFO: HHH000412: Hibernate Core {4.3.7.Final}
dez 09, 2014 6:09:27 PM org.hibernate.cfg.Environment
INFO: HHH000206: hibernate.properties not found
dez 09, 2014 6:09:27 PM org.hibernate.cfg.Environment buildBytecodeProvider
INFO: HHH000021: Bytecode provider name : javassist
dez 09, 2014 6:09:27 PM org.hibernate.cfg.Configuration configure
INFO: HHH000043: Configuring from resource: /hibernate.cfg.xml
dez 09, 2014 6:09:27 PM org.hibernate.cfg.Configuration getConfigurationInputStream
INFO: HHH000040: Configuration resource: /hibernate.cfg.xml
dez 09, 2014 6:09:27 PM org.hibernate.internal.util.xml.DTDEntityResolver resolveEntity
WARN: HHH000223: Recognized obsolete hibernate namespace http://hibernate.sourceforge.net/. Use namespace http://www.hibernate.org/dtd/ instead. Refer to Hibernate 3.6 Migration Guide!
dez 09, 2014 6:09:27 PM org.hibernate.cfg.Configuration addResource
INFO: HHH000221: Reading mappings from resource: com.gontuseries.hibernate.Student_Info
Exception in thread "main" org.hibernate.MappingNotFoundException: resource: com.gontuseries.hibernate.Student_Info not found
at org.hibernate.cfg.Configuration.addResource(Configuration.java:769)
at org.hibernate.cfg.AnnotationConfiguration.addResource(AnnotationConfiguration.java:124)
at org.hibernate.cfg.AnnotationConfiguration.addResource(AnnotationConfiguration.java:47)
at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:2257)
at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:2229)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2209)
at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:214)
at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:47)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2162)
at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:202)
at org.hibernate.cfg.AnnotationConfiguration.doConfigure(AnnotationConfiguration.java:47)
at org.hibernate.cfg.Configuration.configure(Configuration.java:2077)
at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:184)
at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:47)
at org.hibernate.cfg.Configuration.configure(Configuration.java:2056)
at org.hibernate.cfg.AnnotationConfiguration.configure(AnnotationConfiguration.java:178)
at com.gontuseries.hibernate.Main.main(Main.java:16)

Muito Obrigado.

Criado 22 de dezembro de 2012
Ultima resposta 9 de dez. de 2014
Respostas 5
Participantes 3