Mapeamento Hibernate

6 respostas
Vinny

To com um problema no mapeamento de uma classe o problema é o seguinte eu tinha a classe Equipamentos e EquipamentosId, na EquipamentosId eu tinha 2 valores de chave primaria da tabela equipamento ai tudo funciona certinho mapeava corretamente, so que eu percebi que um dos atributos que estavam como chave primaria não poderia ser chave primaria da tabela equipamentos, com isso eu alterei a estrutura da tabela e ficou apenas com o codigo do equipamento como chave primaria, sendo assim não teria mais utilidade eu ter a classe EquipamentoId que é usada quando se tem mais de uma chave primaria na tabela, eu fiz toda a alteração na classe nos xml e no banco, só que agora quando eu vou executar o programa e fazer o mapeamento da um erro dizendo que nao foi encontrada a classe EquipamentosId, so que ele foi removida eu fiz todas a alterações necessárias para poder remover ela so que nao sei onde e como ela é chamada no mapeamento.

Já refiz tudo denovo onde apaguei todas a classe os arquivo de mapeamento e de engeharia reversa fiz do zero denovo mais o EquipamentosId insiste em aparecer la nao sei o que fazer mais eu nao consigo achar o problema.
vo pasta a classe e o xml de mapeamento da tabela Equipamentos:
Classe

package hibernate.entity;
// Generated 14/05/2010 23:57:55 by Hibernate Tools 3.2.1.GA


import java.util.HashSet;
import java.util.Set;

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


     private int equCodigo;
     private Pessoas pessoas;
     private String equAparelho;
     private String equMarca;
     private String equModelo;
     private String equPatrimonio;
     private String equSerie;
     private String equAcessorios;
     private Set ordensServicos = new HashSet(0);

    public Equipamentos() {
    }

	
    public Equipamentos(int equCodigo, Pessoas pessoas) {
        this.equCodigo = equCodigo;
        this.pessoas = pessoas;
    }
    public Equipamentos(int equCodigo, Pessoas pessoas, String equAparelho, String equMarca, String equModelo, String equPatrimonio, String equSerie, String equAcessorios, Set ordensServicos) {
       this.equCodigo = equCodigo;
       this.pessoas = pessoas;
       this.equAparelho = equAparelho;
       this.equMarca = equMarca;
       this.equModelo = equModelo;
       this.equPatrimonio = equPatrimonio;
       this.equSerie = equSerie;
       this.equAcessorios = equAcessorios;
       this.ordensServicos = ordensServicos;
    }
   
    public int getEquCodigo() {
        return this.equCodigo;
    }
    
    public void setEquCodigo(int equCodigo) {
        this.equCodigo = equCodigo;
    }
    public Pessoas getPessoas() {
        return this.pessoas;
    }
    
    public void setPessoas(Pessoas pessoas) {
        this.pessoas = pessoas;
    }
    public String getEquAparelho() {
        return this.equAparelho;
    }
    
    public void setEquAparelho(String equAparelho) {
        this.equAparelho = equAparelho;
    }
    public String getEquMarca() {
        return this.equMarca;
    }
    
    public void setEquMarca(String equMarca) {
        this.equMarca = equMarca;
    }
    public String getEquModelo() {
        return this.equModelo;
    }
    
    public void setEquModelo(String equModelo) {
        this.equModelo = equModelo;
    }
    public String getEquPatrimonio() {
        return this.equPatrimonio;
    }
    
    public void setEquPatrimonio(String equPatrimonio) {
        this.equPatrimonio = equPatrimonio;
    }
    public String getEquSerie() {
        return this.equSerie;
    }
    
    public void setEquSerie(String equSerie) {
        this.equSerie = equSerie;
    }
    public String getEquAcessorios() {
        return this.equAcessorios;
    }
    
    public void setEquAcessorios(String equAcessorios) {
        this.equAcessorios = equAcessorios;
    }
    public Set getOrdensServicos() {
        return this.ordensServicos;
    }
    
    public void setOrdensServicos(Set ordensServicos) {
        this.ordensServicos = ordensServicos;
    }
}

XML

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated 14/05/2010 23:57:55 by Hibernate Tools 3.2.1.GA -->
<hibernate-mapping>
    <class name="hibernate.entity.Equipamentos" table="EQUIPAMENTOS">
        <id name="equCodigo" type="int">
            <column name="EQU_CODIGO" />
            <generator class="assigned" />
        </id>
        <many-to-one name="pessoas" class="hibernate.entity.Pessoas" fetch="select">
            <column name="PES_CODIGO" not-null="true" />
        </many-to-one>
        <property name="equAparelho" type="string">
            <column name="EQU_APARELHO" length="25" />
        </property>
        <property name="equMarca" type="string">
            <column name="EQU_MARCA" length="20" />
        </property>
        <property name="equModelo" type="string">
            <column name="EQU_MODELO" length="20" />
        </property>
        <property name="equPatrimonio" type="string">
            <column name="EQU_PATRIMONIO" length="20" />
        </property>
        <property name="equSerie" type="string">
            <column name="EQU_SERIE" length="20" />
        </property>
        <property name="equAcessorios" type="string">
            <column name="EQU_ACESSORIOS" length="45" />
        </property>
        <set name="ordensServicos" inverse="true">
            <key>
                <column name="EQU_CODIGO" not-null="true" />
            </key>
            <one-to-many class="hibernate.entity.OrdensServico" />
        </set>
    </class>
</hibernate-mapping>

6 Respostas

V

Posta o erro.

Vinny

É verdade é bom posta o erro pra esclerecer melhor o o problema
mais como se pode ver teve um erro na inicialização do EquipamentosId, o fato é que essa classe não existe mais e em nenhuma outra classe faz a chamada dela nem no xml
eu ja criei um outro projeto do zero fiz a engenharia reversa do banco que crio todas as classes e xml com a alteração, e mesmo assim ele ainda tenta carrega o EquipamentosId, coisa que
nem foi criado.
Isso é coisa do Além não sei da onde ele ta tentanto carregar o EquipamentosId

Erro abaixo:

Initial SessionFactory creation failed.org.hibernate.MappingException: component class not found: hibernate.entity.EquipamentosId
Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError
        at hibernate.HibernateUtil.<clinit>(HibernateUtil.java:109)
        at outros.frmPrincipal.<init>(frmPrincipal.java:94)
        at outros.frmPrincipal$44.run(frmPrincipal.java:1357)
        at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
Caused by: org.hibernate.MappingException: component class not found: hibernate.entity.EquipamentosId
        at org.hibernate.mapping.Component.getComponentClass(Component.java:104)
        at org.hibernate.tuple.component.PojoComponentTuplizer.buildGetter(PojoComponentTuplizer.java:133)
        at org.hibernate.tuple.component.AbstractComponentTuplizer.<init>(AbstractComponentTuplizer.java:43)
        at org.hibernate.tuple.component.PojoComponentTuplizer.<init>(PojoComponentTuplizer.java:38)
        at org.hibernate.tuple.component.ComponentEntityModeToTuplizerMapping.<init>(ComponentEntityModeToTuplizerMapping.java:52)
        at org.hibernate.tuple.component.ComponentMetamodel.<init>(ComponentMetamodel.java:50)
        at org.hibernate.mapping.Component.buildType(Component.java:152)
        at org.hibernate.mapping.Component.getType(Component.java:145)
        at org.hibernate.cfg.Configuration$1.getIdentifierType(Configuration.java:2047)
        at org.hibernate.type.EntityType.getIdentifierType(EntityType.java:487)
        at org.hibernate.type.EntityType.getIdentifierOrUniqueKeyType(EntityType.java:512)
        at org.hibernate.type.ManyToOneType.getColumnSpan(ManyToOneType.java:65)
        at org.hibernate.mapping.SimpleValue.isValid(SimpleValue.java:253)
        at org.hibernate.mapping.ToOne.isValid(ToOne.java:82)
        at org.hibernate.mapping.Property.isValid(Property.java:185)
        at org.hibernate.mapping.PersistentClass.validate(PersistentClass.java:440)
        at org.hibernate.mapping.RootClass.validate(RootClass.java:192)
        at org.hibernate.cfg.Configuration.validate(Configuration.java:1102)
        at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1287)
        at hibernate.HibernateUtil.<clinit>(HibernateUtil.java:104)
        ... 10 more
Caused by: java.lang.ClassNotFoundException: hibernate.entity.EquipamentosId
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:169)
        at org.hibernate.util.ReflectHelper.classForName(ReflectHelper.java:100)
        at org.hibernate.mapping.Component.getComponentClass(Component.java:101)
        ... 29 more
LPJava

vc declarou o mapeamento RESOURCE no arquivo hibernate.cfg.xml?

veja: http://blog.camilolopes.com.br/jsf-hibernate-mysql-no-eclipse/

flw!

Vinny

Sim declarei, mas nem uso la
na verdade eu fiz o mapeamento na mão
fico assim:

Configuration cfg = new Configuration()
            .setProperty("hibernate.dialect",
                         "org.hibernate.dialect.FirebirdDialect")
            .setProperty("hibernate.connection.driver_class",
                         "org.firebirdsql.jdbc.FBDriver")
            .setProperty("hibernate.connection.url",
                         url)
            .setProperty("hibernate.connection.username", "SYSDBA")
            .setProperty("hibernate.connection.password", "*******")
            .setProperty("hibernate.connection.autocommit", "true")
            .addResource("hibernate/entity/Agenda.hbm.xml")
            .addResource("hibernate/entity/Bancos.hbm.xml")
            .addResource("hibernate/entity/Categorias.hbm.xml")
            .addResource("hibernate/entity/Chamadas.hbm.xml")
            .addResource("hibernate/entity/Cidades.hbm.xml")
            .addResource("hibernate/entity/Comentarios.hbm.xml")
            .addResource("hibernate/entity/Compras.hbm.xml")
            .addResource("hibernate/entity/ComprasProdutos.hbm.xml")
            .addResource("hibernate/entity/ConfigFuncionario.hbm.xml")
            .addResource("hibernate/entity/ContasPagar.hbm.xml")
            .addResource("hibernate/entity/ContasReceber.hbm.xml")
            .addResource("hibernate/entity/Equipamentos.hbm.xml")
            .addResource("hibernate/entity/Estados.hbm.xml")
            .addResource("hibernate/entity/Funcionarios.hbm.xml")
            .addResource("hibernate/entity/Orcamentos.hbm.xml")
            .addResource("hibernate/entity/OrcamentosProdutos.hbm.xml")
            .addResource("hibernate/entity/OrcamentosServicos.hbm.xml")
            .addResource("hibernate/entity/OrdensServico.hbm.xml")
            .addResource("hibernate/entity/OrdensServicoProdutos.hbm.xml")
            .addResource("hibernate/entity/OrdensServicoServicos.hbm.xml")
            .addResource("hibernate/entity/OrdensServicoSituacao.hbm.xml")
            .addResource("hibernate/entity/Pedidos.hbm.xml")
            .addResource("hibernate/entity/PedidosProdutos.hbm.xml")
            .addResource("hibernate/entity/Pessoas.hbm.xml")
            .addResource("hibernate/entity/Pfisicas.hbm.xml")
            .addResource("hibernate/entity/Pjuridicas.hbm.xml")
            .addResource("hibernate/entity/Produtos.hbm.xml")
            .addResource("hibernate/entity/Servicos.hbm.xml")
            .addResource("hibernate/entity/Situacao.hbm.xml")
            .addResource("hibernate/entity/Vendas.hbm.xml")
            .addResource("hibernate/entity/VendasProdutos.hbm.xml")
            .addResource("hibernate/entity/VendasServicos.hbm.xml");

            sessionFactory = cfg.buildSessionFactory();
LPJava

eu nao posso mentir para vc que ler dessa forma é horrivel, eu nao tenho habito de usar assim. Nao tem coisa pior que dar manutencao nisso ai.

Vinny

É que eu precisei fazer dessa maneira por causa do local do banco
dessa forma eu posso alterar o endereço do banco pq eu consigo identifica o caminho
do banco de dados via código por isso eu fiz o mapeamento programaticamente!

Bom mais se vc ver no código nao tem o EquipamentosId, até agora eu não sei da onde
que ele ta vindo como ta tentanto mapiar uma coisa que nao existe e nem ta sendo pedido
pra ela ser mapiada!

Sinceramente não sei mais o que fazer já o a 4 dias com esse problema e não consigo resolver
to vendo que vai ser melhor eu começar tudo denovo meu projeto só que sem usar hibernate, pq
esse negocio ta complicado!

Criado 15 de maio de 2010
Ultima resposta 15 de mai. de 2010
Respostas 6
Participantes 3