Erro Hibernate org.hibernate.InvalidMappingException: Could not parse mapping document from resourc

Olá pessoal, to iniciando os estudos em hibernate e to com o seguinte problema.

vamos do ínicio estou usando as seguintes bibliotecas

hibernate3
jta-1.1
antlr-2.7.6
commons-collections-3.1
dom4j-1.6.1
javassist-3.9.0.GA
c3p0-0.9.1
ehcache-1.2.3
slf4j-simple-1.5.2
slf4j-api-1.5.2
postgresql-8.4-701.jdbc4.jar

tenho 2 documento xml e 2 classe java

Aluno.java

    public class Aluno  
    {  
        private int alu_codigo;  
        private String alu_nome;  
        private String alu_cidade;  
        private String alu_telefone;  
        private String alu_curso;  
      
        public Aluno()  //metódo construtor  
       {   }  
         
       public String getAlu_cidade()  
       {  
           return alu_cidade;  
       }  
     
       public void setAlu_cidade(String alu_cidade)  
       {  
           this.alu_cidade = alu_cidade;  
       }  
     
       public int getAlu_codigo()  
       {  
           return alu_codigo;  
       }  
     
       public void setAlu_codigo(int alu_codigo)  
       {  
           this.alu_codigo = alu_codigo;  
       }  
     
       public String getAlu_curso()  
       {  
           return alu_curso;  
       }  
     
       public void setAlu_curso(String alu_curso)  
       {  
           this.alu_curso = alu_curso;  
       }  
     
       public String getAlu_nome()  
       {  
           return alu_nome;  
       }  
     
       public void setAlu_nome(String alu_nome)  
       {  
           this.alu_nome = alu_nome;  
       }  
     
       public String getAlu_telefone()  
       {  
           return alu_telefone;  
       }  
     
       public void setAlu_telefone(String alu_telefone)  
       {  
           this.alu_telefone = alu_telefone;  
       }  
   }  

GravaAluno.java

[code] import javax.swing.JOptionPane;
import org.hibernate.;
import org.hibernate.cfg.
;

public class GravaAluno
{
public static void main(String []args)
{
try
{
SessionFactory fabrica = new Configuration().configure().buildSessionFactory();
Session sessao = fabrica.openSession();
Aluno aluno = new Aluno();
aluno.setAlu_codigo(1);
aluno.setAlu_nome(“Renato”);
aluno.setAlu_curso(“Hibernate”);
aluno.setAlu_telefone(“222222222”);
aluno.setAlu_cidade(“Belo Horizonte”);
Transaction transacao_aluno = sessao.beginTransaction();
sessao.save(aluno);
transacao_aluno.commit();
sessao.close();
}
catch(Exception e)
{
JOptionPane.showMessageDialog(null,"Erro na inserção : "+e);
}
}
}
[/code]

aluno.hbm.xml

[code] <?xml version="1.0" encoding="UTF-8"?>

[/code]

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>  
            <property name="connection.url">  
                jdbc:postgresql://localhost/JavaHibernate  
            </property>  
           <property name="connection.username">  
               postgres  
           </property>  
           <property name="connection.password">  
               xxxxxx  
           </property>  
           <property name="connection.driver_class">  
               org.postgresql.Driver  
           </property>  
           <property name="dialect">  
               org.hibernate.dialect.PostgreSQLDialect  
           </property>  
           <mapping resource="aluno.hbm.xml"/>  
       </session-factory>  
   </hibernate-configuration>  

quando executo a classe gravaAluno
me retorna um erro
Erro na inserção : org.hibernate.InvalidMappingException: Could not parse mapping document from resource aluno.hbm.xml

Ja procurei, mas não consigo achar o erro.

Para esclarecimento, este mesmo problema ja foi relatado aqui no forum, no seguinte link:

http://www.guj.com.br/posts/list/132888.java#715383

So que o cara em questão estava usando o MySQL, aí mudou pro Postgre e o problema foi resolvido. Eu ja estou usando Postgre, por isso a “solução” que ele encontrou não vale pra mim.

To usando Netbeans 6.8

Alguém poderia ajudar?
Desde já, agradeço a atenção.

Tente cololocar a classe Aluno dentro de algum pacote como br.com.nomedesuaempresa.entity, se ainda não estiver.
No mapeamento do hbm.xml, coloque em classe o nome inteiramente qualificado desta, ou seja, o pacote + classe. Exemplo:
’<class name="br.com.nomedesuaempresa.entity.Aluno ’

Mas de verdade mesmo, utilize anotações no lugar de arquivos .hbm.xml. É bem mais simples de escrever os mapeamentos.
Estude também JPA.

Um ótimo livro sobre utilização do hibernate e JPA é :
http://www.manning.com/bauer2/ (Java Persistence with Hibernate)

Leitura indispensável.

[]s

Ola, bom a classe Aluno está dentro do pacote padrão, bem como a classe gravaAluno e os arquivos xml. Sendo assim, deveria conseguir mapear sem problemas. Quanto a utilizar anotações, estou começando a estudar hibernate e não sei como fazer ainda. Ja tentei colocar a classe aluno dentro de algum pacote e dpois coloquei no mapeamento do aluno.hbm.xml o caminho completo (pacote + classe). Mas o problema persiste.

Você pode copiar aqui a stack trace do erro?

Tipo… a propriedade alu_codigo no banco de dados esta como primary key?

Cola o script do banco aqui tb…

Ola pessoal.

Obrigado aí pela atenção.
Consegui resolver o problema.
Deixei o hibernate.cfg.xml dentro do pacote padrão e criei um pacote novo colocando dentro dele as classes Aluno e GravaAluno e o arquivo aluno.hbm.xml.

No mapeamento coloquei nomedopacotenovo/aluno.hbm.xml (antes tinha tentado isso colocando nomedopacotenovo.aluno.hbm.xml), dessa forma funcionou.

Agradeço a todos pela ajuda aí.

Tudo o que eu quero é apenas estabelecer um mapeamento entre a classe intranet.Papel e a tabela Intranet.dbo.TB_PAPEL no servidor 192.1.1.13\Producao - SQL Server 2008. Meu maior suspeito é essa barra invertida que eu não sei como se comporta na string de conexão do hibernate.
Segue abaixo os resources.

hibernate.cfg.xml

<?xml version=‘1.0’ encoding=‘utf-8’?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD//EN"
http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd”>
<hibernate-configuration>
<session-factory>
<property name=“hibernate.connection.driver_class”>com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
<property name=“hibernate.connection.url”>jdbc:sqlserver://192.1.1.13\PRODUCAO;DatabaseName=Intranet</property>
<property name=“hibernate.connection.username”>usrIntra</property>
<property name=“hibernate.connection.password”>intra</property>
<property name=“hibernate.connection.pool_size”>10</property>
<property name=“hibernate.dialect”>org.hibernate.dialect.SQLServerDialect</property>
<property name=“hibernate.current_session_context_class”>org.hibernate.context.ManagedSessionContext</property>
<property name=“hibernate.cache.use_second_level_cache”>false</property>
<property name=“hibernate.cache.use_query_cache”>false</property>
<property name=“hibernate.cache.provider_class”>org.hibernate.cache.NoCacheProvider</property>
<property name=“hibernate.show_sql”>true</property>

    &lt;mapping resource="intranet/Papel.hbm.xml"/&gt;
&lt;/session-factory&gt;

</hibernate-configuration>

hibernate.properties

hibernate.dialect = org.hibernate.dialect.SQLServerDialect
hibernate.connection.driver_class = com.microsoft.sqlserver.jdbc.SQLServerDriver
hibernate.connection.url = jdbc:sqlserver://192.1.1.13\PRODUCAO;DatabaseName=Intranet
hibernate.connection.username = usrIntra
hibernate.connection.password = intra

Tentativa 1 - Com hibernate.cfg.xml

SessionFactory sessao = new Configuration().configure().buildSessionFactory();
sessao.openSession();

Tentativa 2 - Com hibernate.properties

SessionFactory factory = new Configuration().addClass(Papel.class).buildSessionFactory();
Session session = factory.openSession();
session.flush();
session.close();

Erro apresentado

org.hibernate.InvalidMappingException: Could not parse mapping document from resource intranet/Papel.hbm.xml

Se alguém puder me ajudar, eu agradeceria muito. Obrigado.

Segue também as classes para mapeamento.

intranet.Papel.java

package intranet;

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

}

Papel.hbm.xml

<?xml version=“1.0” encoding=“UTF-8”?>
<!DOCTYPE hibernate-mapping PUBLIC “-//Hibernate/Hibernate Mapping DTD//EN” “http://hibernate.sourceforge.net/hibernate-mapping.dtd”>
<hibernate-mapping>
<class name=“Papel” table=“dbo.TB_PAPEL”>
<id name=“nome” column=“NOME” type=“string”>
<generator class=“assigned”/>
</id>
<property name=“descricao” column=“DESCRICAO” type=“string”/>
</class>
</hibernate-mapping>

Aê, bando de pé de breque, consegui!

Mudei o cabeçalho do hbm.xml de:
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping.dtd"
Para:
<!DOCTYPE hibernate-mapping PUBLIC “-//Hibernate Mapping DTD 3.0//EN”
http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd”>

Com o hibernate.cfg.xml funcionou normalmente.

Com o hibernate.properties não.
Dá o erro com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host 192.1.1.13PRODUCAO, port 1433 has failed.

Não há nada de errado com o servidor, pois é a mesma string de conexão no cfg.xml e lá funciona normalmente.

Alguém tem alguma sugestão?

Pessoal, consegui denovo!

Ao contrário do hibernate.cfg.xml, quando se está no hibernate.properties, ele trata a string de conexão como uma String mesmo.
Ou seja, não se pode escrever: hibernate.connection.url = jdbc:sqlserver://192.1.1.13\PRODUCAO;DatabaseName=Intranet .
Tem que ser: hibernate.connection.url = jdbc:sqlserver://192.1.1.13\PRODUCAO;DatabaseName=Intranet .

E pra saber disso, hein?! Puro tentative/error.

Grande Java!!!

Pessoal, consegui denovo!

Ao contrário do hibernate.cfg.xml, quando se está no hibernate.properties, ele trata a string de conexão como uma String mesmo.
Ou seja, não se pode escrever: hibernate.connection.url = jdbc:sqlserver://192.1.1.13\PRODUCAO;DatabaseName=Intranet .
Tem que ser: hibernate.connection.url = jdbc:sqlserver://192.1.1.13\PRODUCAO;DatabaseName=Intranet .

E pra saber disso, hein?! Puro tentative/error.

Grande Java!!!