Problemas com herança no hibernate

1 resposta
Solfier

bom dia,

estou começando agora com o hibernate, e estava indo tudo bem até aparecer uma herança!
Tenho uma tabela Equipamento e outra Computador relacionadas pelo campo equipamentoId (Figura abaixo)

A Stack Trace é

Caused by: org.hibernate.InvalidMappingException: Could not parse mapping document from resource hibernate/Computador.hbm.xml

Qual o erro que estou cometendo?

[IMG]http://img225.imageshack.us/img225/9039/tablev.png[/IMG]

Como classe tenho:

Computador.java
public class Computador extends Equipamento {

    private String codigo;
    private String modelo;
    private Date dtAquisicao;
    private Date dtGarantia;
    private String processador;
    private String frequencia;
    private String memoria;
    private String hd;
    private String ativo;
    private Set licencas = new HashSet(0);

    /* getter and setters*/
Equipamento.java
public class Equipamento implements java.io.Serializable {

    private int equipamentoId;
    private Setor setor;
    private Status status;
    private Fabricante fabricante;
    private String patrimonio;

    /* getter and setters*/
Computador.hbm.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 26/07/2011 20:16:08 by Hibernate Tools 3.2.1.GA -->
<hibernate-mapping>
    
    <joined-subclass name="vo.Computador" table="computador" catalog="jpManager" extends="vo.Equipamento">
        <key name="equipamentoId" type="int">
            <column name="equipamentoId" />
            <!--generator class="assigned" /-->
        </key>
        <property name="codigo" type="string">
            <column name="codigo" length="8" not-null="true" />
        </property>
        <property name="modelo" type="string">
            <column name="modelo" length="20" />
        </property>
        <property name="dtAquisicao" type="date">
            <column name="dtAquisicao" length="10" />
        </property>
        <property name="dtGarantia" type="date">
            <column name="dtGarantia" length="10" />
        </property>
        <property name="processador" type="string">
            <column name="processador" length="20" />
        </property>
        <property name="frequencia" type="string">
            <column name="frequencia" length="20" />
        </property>
        <property name="memoria" type="string">
            <column name="memoria" length="20" />
        </property>
        <property name="hd" type="string">
            <column name="hd" length="20" />
        </property>
        <property name="ativo" type="string">
            <column name="ativo" length="9" />
        </property>  
    </joined-subclass>
    
</hibernate-mapping>
Equipamento.hbm.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 26/07/2011 20:16:08 by Hibernate Tools 3.2.1.GA -->
<hibernate-mapping>
    <class name="vo.Equipamento" table="equipamento" catalog="jpManager">
        <id name="equipamentoId" type="int">
            <column name="equipamentoId" />
            <generator class="assigned" />
        </id>
        <many-to-one name="status" class="vo.Status" fetch="select">
            <column name="statusId" not-null="true"/>
        </many-to-one>
        <many-to-one name="fabricante" class="vo.Fabricante" fetch="select">
            <column name="fabricanteId" />
        </many-to-one>
        <many-to-one name="setor" class="vo.Setor" fetch="select">
            <column name="setorId" />
        </many-to-one>
        <property name="patrimonio" type="string">
            <column name="patrimonio" length="10" not-null="true" />
        </property>
    </class>
</hibernate-mapping>

1 Resposta

rodrigocolasso

Você pensou em utilizar annotation no hibernate, acho muito mais fácil e rápido do que utilizar os xml.

XML hell :smiley:

Criado 1 de agosto de 2011
Ultima resposta 1 de ago. de 2011
Respostas 1
Participantes 2