Erro de unmapped class usando Hibernate e MySQL

2 respostas
kikobarretto

Pessoal, tou tentando executar uma consulta HQL simples “from Usuario” só pra testar a conexao com o banco de dados, mas estou tendo o seguinte erro:

org.hibernate.MappingException: Association references unmapped class: domain.Visita

at org.hibernate.cfg.HbmBinder.bindCollectionSecondPass(HbmBinder.java:2380)

at org.hibernate.cfg.HbmBinder$CollectionSecondPass.secondPass(HbmBinder.java:2662)

at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:43)

at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1130)

at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:324)

at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1286)

at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859)

No entanto, creio que o mapeamento está correto, posto que foi o próprio Hibernate quem o gerou e eu nao alterei as configurações… Só há duas classes: Usuario e Visita que estao no pacote domain. Segue abaixo o codigo fonte do projeto. Alguem tem alguma ideia de onde está o erro neste mapeamento?

Valeu!!

/**
 * Usuario generated by hbm2java
 */
public class Usuario  implements java.io.Serializable {


     private Integer id;
     private String nome;
     private String setor;
     private String matricula;
     private String login;
     private String pwd;
     private int nivelAcesso;
     private Set visitas = new HashSet(0);
/*getters and setters*/
<hibernate-mapping>
    <class name="domain.Usuario" table="usuario" catalog="visitantes_DB">
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="identity" />
        </id>
        <property name="nome" type="string">
            <column name="nome" length="50" not-null="true" unique="true" />
        </property>
        <property name="setor" type="string">
            <column name="setor" length="15" />
        </property>
        <property name="matricula" type="string">
            <column name="matricula" length="7" />
        </property>
        <property name="login" type="string">
            <column name="login" length="20" not-null="true" unique="true" />
        </property>
        <property name="pwd" type="string">
            <column name="pwd" length="30" not-null="true" />
        </property>
        <property name="nivelAcesso" type="int">
            <column name="nivel_acesso" not-null="true" />
        </property>
        <set name="visitas" inverse="true">
            <key>
                <column name="responsavel" not-null="true" />
            </key>
            <one-to-many class="domain.Visita" />
        </set>
    </class>
</hibernate-mapping>
/**
 * Visita generated by hbm2java
 */
public class Visita  implements java.io.Serializable {


     private Integer id;
     private Usuario usuario;
     private Date entrada;
     private Date saida;
     private String visitante;
     private String tipoDoc;
     private Integer nmDoc;
     private Date dtExpedicao;
     private String uf;
     private String visitado;
     private Integer visitadoAndar;
/*getters and setters*/
<hibernate-mapping>
    <class name="domain.Visita" table="visita" catalog="visitantes_DB">
        <id name="id" type="java.lang.Integer">
            <column name="id" />
            <generator class="identity" />
        </id>
        <many-to-one name="usuario" class="domain.Usuario" fetch="select">
            <column name="responsavel" not-null="true" />
        </many-to-one>
        <property name="entrada" type="date">
            <column name="entrada" length="10" not-null="true" />
        </property>
        <property name="saida" type="date">
            <column name="saida" length="10" />
        </property>
        <property name="visitante" type="string">
            <column name="visitante" length="250" />
        </property>
        <property name="tipoDoc" type="string">
            <column name="tipo_doc" length="15" />
        </property>
        <property name="nmDoc" type="java.lang.Integer">
            <column name="nm_doc" />
        </property>
        <property name="dtExpedicao" type="date">
            <column name="dt_expedicao" length="10" />
        </property>
        <property name="uf" type="string">
            <column name="uf" length="2" />
        </property>
        <property name="visitado" type="string">
            <column name="visitado" length="200" />
        </property>
        <property name="visitadoAndar" type="java.lang.Integer">
            <column name="visitado_andar" />
        </property>
    </class>
</hibernate-mapping>

hibernate.cfg

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "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/visitantes_DB</property>
    <property name="hibernate.connection.username">root</property>
    <property name="hibernate.connection.password">root</property>
    <property name="hibernate.show_sql">true</property>
    <property name="hibernate.current_session_context_class">thread</property>
    <mapping resource="domain/Usuario.hbm.xml"/>
    <mapping resource="domain/Visita.hbm.xml"/>
  </session-factory>
</hibernate-configuration>

2 Respostas

Felagund

Suas entidades estão no pacote domain?

no diretório src/domain?

kikobarretto

Felagund, estão sim… no pacote domain… é assim que estao distribuídas como na imagem em anexo…

Criado 2 de junho de 2009
Ultima resposta 3 de jun. de 2009
Respostas 2
Participantes 2