InvallidMappingException

5 respostas
moacirjava

Estou estudando Annotations com Hibernate e me deparei com o seguinte erro:
org.hibernate.InvalidMappingException

O que é que está errado no mapeamento via annotations?

org.hibernate.util.XMLHelper$ErrorLogger error
SEVERE: Error parsing XML: XML InputStream(1) Content is not allowed in prolog.
Exception in thread "main" java.lang.ExceptionInInitializerError
        at controle.StartHibernate.<clinit>(StartHibernate.java:24)
        at modelo.OperacoesBanco.salvar(OperacoesBanco.java:28)
        at controle.Main.main(Main.java:20)
Caused by: org.hibernate.InvalidMappingException: Could not parse mapping document from resource

Porque isso?

Essas são minhas classes de mapeamento:
import java.io.Serializable;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;


@Entity
@Table(name="usuario", schema="teste")
public class Usuario implements Serializable{

    @Column(name = "nome")
    private String nome = "";


    private static final long serialVersionUID = 1L;

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id")
    private Long id;    
   //meus gets e sets

}
Esse é meu banco para teste:
CREATE TABLE usuario (
  id int(11) NOT NULL auto_increment,
  nome varchar(10) default NULL,
  PRIMARY KEY  (id)
) 

CREATE TABLE dadosusuario (
  id int(11) NOT NULL auto_increment,
  dado varchar(5) default NULL,
  usuario_id int(11) NOT NULL,
  PRIMARY KEY  (id),
  FOREIGN KEY (usuario_id) REFERENCES usuario (id)
)

5 Respostas

roassunca

O que vc faz na linha 24 de StartHibernate.java?
Vc já verificou o seu arquivo hibernate.cfg.xml?

moacirjava
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;


public class StartHibernate {

    private static SessionFactory factory;
    private static final ThreadLocal<Session> tl = new ThreadLocal<Session>();

    static{
        try{
            factory = new AnnotationConfiguration().configure("hibernate.cfg.xml").buildSessionFactory();
        }
        catch(Throwable t){
            System.out.println("\n Erro na classe StartHibernate \n");
            throw new ExceptionInInitializerError(t);
        }
    }

    public static Session getSession(){
        Session session = (Session) tl.get();
        session = factory.openSession();
        tl.set(session);
        return session;
    }
}
<?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:3306/teste</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password">1234</property>
    <mapping class="modelo.Usuario" file="" jar="" package="" resource=""/>
  </session-factory>
</hibernate-configuration>
roassunca

altere

<mapping class="modelo.Usuario" file="" jar="" package="" resource=""/>

para

<mapping class="modelo.Usuario"/>
moacirjava

Funcionou perfeito!!!
Agora vou partir para as outras tabelas, obrigado roassunca!

moacirjava

Agora estou com um probleminha na consulta…
http://www.guj.com.br/posts/list/119336.java

Criado 25 de fevereiro de 2009
Ultima resposta 1 de mar. de 2009
Respostas 5
Participantes 2