Fórum Minha aplicação hibernate dá erro, mas a classe tá lá #394967

02/02/2011

0

Comecei a estudar o hibernate e fui acompanhando um tutorial q peguei na web. Ele diz que um arquivo(Curso.hbm.xml) não foi encontrado. Abaixo meus arquivos, todos.
Curso.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC 
"-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping package="com.persistencia">
    <class name="Curso">
        <id name="id">
            <generator class="increment"/>
        </id>
        <property name="descricao"></property>
        <property name="nome"></property>
    </class>
</hibernate-mapping>

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>
        <property name="hibernate.dialect">
            org.hibernate.dialect.MySQLDialect
        </property>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost/hibernate?autoReconnect=true</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.connection.password">simbad</property>
<!-- Condiguração do c3p0 -->
        <property name="hibernate.c3p0.max_size">10</property>
        <property name="hibernate.c3p0.min_size">2</property>
        <property name="hibernate.c3p0.timeout">5000</property>
        <property name="hibernate.c3p0.max_statements">10</property>
        <property name="hibernate.c3p0.idle_test_period">3000</property>
        <property name="hibernate.c3p0.acquire_increment">2</property>
<!-- Configurações de debug -->
        <property name="show_sql">true</property>
        <property name="hibernate.generate_statistics">true</property>
        <property name="hibernate.use_sql_comments">true</property>
        <mapping resource="Curso.hbm.xml"/>
        <mapping resource="Disciplina.hbm.xml"/>
        <mapping resource="Turma.hbm.xml"/>
        <mapping resource="Pessoa.hbm.xml"/>
        <mapping resource="Aluno.hbm.xml"/>
        <mapping resource="Professor.hbm.xml"/>
        <mapping resource="Endereco.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

Meu UtilityHibernate
package com.DAO;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtility {
    private static SessionFactory factory;
    static {
        try {
            factory = new Configuration().configure().buildSessionFactory();
        } catch (Exception e) {
            e.printStackTrace();
            factory = null;
        }
    }    
    public static Session getSession() {
        return factory.openSession();
    }
}

Minha classe Curso
package com.persistencia;

public class Curso {
    private String nome;
    private String descricao;
     public void setNome(String nome){
        this.nome = nome; 
     }
     public String getNome(String nome){
         return nome;
     }
     public void setDescricao(String descricao){
         this.descricao = descricao;
     }
     public String getDescricao(String descricao){
         return descricao;
     }     
}

E o erro que está dando
org.hibernate.MappingNotFoundException: resource: Curso.hbm.xml not found
    at org.hibernate.cfg.Configuration.addResource(Configuration.java:769)
    at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:2314)
    at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:2280)
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2260)
    at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:2213)
    at org.hibernate.cfg.Configuration.configure(Configuration.java:2128)
    at org.hibernate.cfg.Configuration.configure(Configuration.java:2107)
    at com.persistencia.HibernateUtility.<clinit>(HibernateUtility.java:11)
    at com.persistencia.Teste.main(Teste.java:10)
Exception in thread "main" java.lang.NullPointerException
    at com.persistencia.HibernateUtility.getSession(HibernateUtility.java:18)
    at com.persistencia.Teste.main(Teste.java:10)
Pjava

Pjava

Responder

Posts

03/02/2011

Robson Teixeira

Olá Paulo

  So tenho 1 pergunta o arquivo Curso.hbm.xml se encontra no mesmo diretorio que os outros arquivos hbm???
  As vezes o hibernate esteja procurando o arquivo em 1 diretorio diferente.

att
  robson Passarella
Responder

Gostei + 0

03/02/2011

Pjava

Sim, robson, todos e estão na Raiz da aplicação. É isso mesmo?
Responder

Gostei + 0

03/02/2011

Davi Costa

Talvez seja  o pacote, que deve passar e não só o nome do xml,se ele estiver em um pacote, vc deve passar o caminho completo.

att Davi
Responder

Gostei + 0

03/02/2011

Pjava

Não, não tá em nenhum pacote o Curso.hbm.xml. Ele na Raiz da aplicação mesmo, só ele. baixei um artigo sobre annotations e vou estudar. Dizem ser mais fácil e melhor trabalhar com elas, q ces acham?
Responder

Gostei + 0

03/02/2011

Pjava

Abaixo meu projeto e suas pastas. Veja que o arquivo Curso.hbm.xml está no Raiz da Aplicação(Projeto). E o arquivo hibernate.cfg.xml está sendo lido, pois senão não me retornaria esse erro, certo? Nos pacotes com.persistencia estão minhas classes e com.DAO está o HibernateUtility.




Responder

Gostei + 0

03/02/2011

Davi Costa

E melhor mantê-los no source.
Se possível no mesmo pacote que vc mantém as entidades.


Att Davi
Responder

Gostei + 0

03/02/2011

Pjava

Já havia feito isso e nada funcionou. Tentei colocar em: Java Resource: sr, onde está o cfg.xml, mas não consigo arrastar para lá.
Responder

Gostei + 0

03/02/2011

Davi Costa

Testou colocar em um pacote e passar o caminho completo?

Att
Responder

Gostei + 0

11/02/2011

Dyego Carmo

Desista destes malditos "hbm"s...

Troque tudo para Anotações , vai resolver os problemas de sua vida !!!!
Responder

Gostei + 0

11/02/2011

Pjava

Ok, Dyego vou fazer sim. Estou estudando exatamente isso. Essas anotações são JPA, certo?
Responder

Gostei + 0

11/02/2011

Davi Costa

JPA é a especificação,
existem algumas implementações do JPA como Hibernate, TopLink.


Att Davi
Responder

Gostei + 0

11/02/2011

Pjava

Ok, vou encerrar essa Thread, pois acho que é isso mesmo. Porém, caso ainda necessite de ajuda em Hibernate com JPA, abro outra. valeu a todos.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar