Hibernate 3.0 - Erro no Mapeamento

10 respostas
josegoncalves.com.br

Olá pessoal bom dia,

Estou tendo dificuldade em executar um exemplo de como usar o Hibernate. Estou a 2 dias querendo executar um exemplo no hibernete.

Meu banco e SQL Server 2005.

DB:

Tabela Cliente
id - String
nome - String
endereco - String
email -String

Classe Cliente
public class Cliente {
    
    private  String id;
    private String nome;
    private String endereco;
    private String email;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getEndereco() {
        return endereco;
    }

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }


}
Arquivo 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">net.sourceforge.jtds.jdbc.Driver</property>  
           <property name="hibernate.connection.url">jdbc:jtds:sqlserver://192.168.0.106/testeHibernete1</property>  
           <property name="hibernate.connection.username">joseph</property>  
           <property name="hibernate.connection.password">senna2592</property>  
           <property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
             
 
           <mapping resource="testehibernete1/Cliente.hbm.xml"/>

       </session-factory>  
   </hibernate-configuration>
Cliente.hbm.xml
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/
hibernate-mapping-3.0.dtd">

<hibernate-mapping>
 <class name="testehibernete1.Cliente" table="Clientes">

  <property name="id" type="java.lang.String" />
  <property name="nome" type="java.lang.String" />
  <property name="endereco" type="java.lang.String" />
  <property name="email" type="java.lang.String" />
  
 </class>

</hibernate-mapping>

Erro apresentado ao executar o exemplo

init:
deps-jar:
Copying 1 file to C:\Documents and Settings\Administrador\Meus documentos\NetBeansProjects\testeHibernete1\build\classes
compile:
run:
log4j:WARN No appenders could be found for logger (org.hibernate.cfg.Environment).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "main" org.hibernate.InvalidMappingException: Could not parse mapping document from resource testehibernete1/Cliente.hbm.xml
        at org.hibernate.cfg.Configuration.addResource(Configuration.java:575)
        at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1593)
        at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1561)
        at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1540)
        at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1514)
        at org.hibernate.cfg.Configuration.configure(Configuration.java:1434)
        at testehibernete1.ClienteDAO.<init>(ClienteDAO.java:19)
        at testehibernete1.Main.main(Main.java:26)
Caused by: org.hibernate.InvalidMappingException: Could not parse mapping document from input stream
        at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:514)
        at org.hibernate.cfg.Configuration.addResource(Configuration.java:572)
        ... 7 more
Caused by: org.dom4j.DocumentException: Illegal character in URL Nested exception: Illegal character in URL
        at org.dom4j.io.SAXReader.read(SAXReader.java:484)
        at org.hibernate.cfg.Configuration.addInputStream(Configuration.java:505)
        ... 8 more
Java Result: 1
BUILD SUCCESSFUL (total time: 1 second)

Alguém sabe aonde está o meu erro?

Obrigado :wink:

10 Respostas

Rafael_Steil

Pela mensagem

Caused by: org.dom4j.DocumentException: Illegal character in URL Nested exception: Illegal character in URL

Parece que o seu Cliente.hbm.xml esta com algum erro de digitacao. De uma olhada nisso. (refaca o arquivo, use um template que voce sabe que funciona etc etc)

Rafael

fnandos
# <?xml version='1.0' encoding='utf-8'?>  
# <!DOCTYPE hibernate-mapping  
# PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN"  
# "http://hibernate.sourceforge.net/  
# hibernate-mapping-3.0.dtd">  
#   
# <hibernate-mapping>  
# <class name="Cliente" table="Cliente">  
#   
#   <id name="id" type="string" />  
#   <property name="nome" type="string" />  
#   <property name="endereco" type="string" />  
#   <property name="email" type="string" />  
#     
# </class>  
#   
# </hibernate-mapping>

testehibernate1 é seu package onde está o hbm certo? Eu aconselho a usar o nome da tabela no singular.

Pablo_Eteg

Sugiro que vc naum faça o mapeamento via xml,
e sim utilizando annotations JPA(Java Persistent Annotations)

você jogaria fora o arquivo Cliente.hbm.xml e a sua classe ficaria da seguinte forma.

@Entity
@Table(name = "cliente")
 public class Cliente {
    
    private  String id;
    private String nome;
    private String endereco;
    private String email;

    @Id
    @Column(name = "id"
    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    @Column(name = "nome")
    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    @Column(name = "endereco")
    public String getEndereco() {
        return endereco;
    }

    public void setEndereco(String endereco) {
        this.endereco = endereco;
    }

    @Column(name = "email")
    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }


}

e o <mapping resource=“testehibernete1/Cliente.hbm.xml”/>
vc alteraria por

<mapping class=“pacote.Cliente” />

vc não teria mais o problema de parse de um xml e os erros seriam mais específicos
do que erro de parse do arquivo

josegoncalves.com.br

Olá pessoal,

Primeiramente obrigado pela ajuda.

Fiz o último passo citado no último post pelo nosso colega. Aconteceu esse problema.

init:
deps-jar:
Compiling 2 source files to C:\Documents and Settings\jose\Meus documentos\NetBeansProjects\exemploHibernete1\build\classes
compile:
run:
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder
        at org.slf4j.LoggerFactory.&lt;clinit&gt;(LoggerFactory.java:60)
        at org.hibernate.cfg.Configuration.&lt;clinit&gt;(Configuration.java:128)
        at exemplohibernete1.ClienteDAO.&lt;init&gt;(ClienteDAO.java:25)
        at exemplohibernete1.Main.main(Main.java:29)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 2 segundos)
Adicionei uma classe ClienteDAO ao projeto
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package exemplohibernete1;

/**
 *
 * @author jose
 */
import org.hibernate.*;
import org.hibernate.cfg.Configuration;

 public class ClienteDAO{
 
     private SessionFactory factory;
 
     public ClienteDAO() throws Exception{
         
        factory = new Configuration().configure().buildSessionFactory();

     }
     
     public void insert(Cliente oCliente) throws Exception{
         Session session = factory.openSession();
         session.save(oCliente);
         session.flush();
         session.close();
     }
    
    
}
Classe Main
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package exemplohibernete1;

/**
 *
 * @author jose
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        
          try {
                
                Cliente oCliente = new Cliente();
                oCliente.setId("1");
                oCliente.setNome("José");
                oCliente.setEndereco("Antonio");
                oCliente.setEmail("[email removido]");
                //Chamada a operação transacional2
                
                ClienteDAO oClienteDAO = new ClienteDAO();
                oClienteDAO.insert(oCliente);

                System.out.println("Cliene incluído com sucesso!");

        } catch (Exception e) {
                System.out.println("Error:");
                e.printStackTrace();
        }
    }

}

Alguém pode me orientar neste erro que esta acontecendo?

Grato pela ajuda :wink:

Pablo_Eteg

Bom o erro que deu eh que está naum está encontrando uma classe no seu classpath

Exception in thread “main” java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder

Verifique se vc tem algum jar no seu projeto que comece com sfl4j-log12

se não tiver você precisa add ao seu classpath. Se existir sua versão deve ser antiga e possivelmente

não contém esta classe "StaticLoggerBinder ".

josegoncalves.com.br

Olá beleza,

Não achei esse jar. Baixei a ultima versão no site do hibernate. 

    Baixei:

    Hibernate Core
    Hibernate Entity Manager
    Hibernate Annotattions

    Adicionei todos os jars nesse projeto. Fiz algo de errado?

Grato

Pablo_Eteg

Baixa esse jar e põe no seu classpath

Parece que o hibernate o utiliza as classes desse pacote para gravar
logs e exibir sqls gerados

http://www.slf4j.org/download.html

L

Acho que o seu hibernate não está achando o log4j para stdout… tipo o arquivo property do log4j

josegoncalves.com.br

Olá,

Valeu pela ajuda. Esse pequeno exemplo está me dando muita dor de cabeça. Gostaria de fazer um exemplo para desktop usando Hibernate e JPA.


   Agora deu esse erro:

init: deps-jar: Copying 1 file to C:\Documents and Settings\jose\Meus documentos\NetBeansProjects\exemploHibernete1\build\classes compile: run: Exception in thread "main" java.lang.StackOverflowError at java.lang.reflect.Method.&lt;init&gt;(Method.java:111) at java.lang.reflect.Method.copy(Method.java:138) at java.lang.reflect.ReflectAccess.copyMethod(ReflectAccess.java:118) at sun.reflect.ReflectionFactory.copyMethod(ReflectionFactory.java:282) at java.lang.Class.searchMethods(Class.java:2628) at java.lang.Class.getMethod0(Class.java:2642) at java.lang.Class.getMethod(Class.java:1579) at org.apache.commons.logging.LogFactory.getContextClassLoader(LogFactory.java:482) at org.apache.commons.logging.LogFactory$1.run(LogFactory.java:266) at java.security.AccessController.doPrivileged(Native Method) at org.apache.commons.logging.LogFactory.getFactory(LogFactory.java:262) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) at org.apache.commons.logging.impl.SLF4JLogFactory.getInstance(SLF4JLogFactory.java:155) at org.apache.commons.logging.LogFactory.getLog(LogFactory.java:414) at org.slf4j.impl.JCLLoggerFactory.getLogger(JCLLoggerFactory.java:69) at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:88) .......

De sua opnião, tem algum exemplo que possa me passar ou ahca melhor contiur nesse código até achar o seu problema?

Valeu

josegoncalves.com.br

Fala galera,

Fiquei trabalhando esses dias e não parei para estudar. 

    Alguém tem um exemplo / tutorial de como usar o Hibernate com JPA ?

Grande abraço :wink:

Criado 9 de julho de 2008
Ultima resposta 18 de jul. de 2008
Respostas 10
Participantes 5