Herança - Hibernate

2 respostas
D

Pessoal, estou com o seguinte problema: Possuo uma entidade Material e duas entidades filhas (Droga e Equipamento).
meu material.hbm.xml ficou da seguinte forma:

VL_MATERIAL_ID_SQL
<joined-subclass name="org.sakaiproject.lar.model.Drug" table="vl_drug" extends="org.sakaiproject.lar.model.Material">
    <key column="materialId"/>
    <property name="physicalState" type="string">
        <column name="physical_state" length="50">
            <comment></comment>
        </column>
    </property>
    <property name="concentration" type="java.lang.Float">
        <column name="concentration" precision="12" scale="0">
            <comment></comment>
        </column>
    </property>
    <property name="description" type="string">
        <column name="description" length="100" not-null="true">
            <comment></comment>
        </column>
    </property> 
 </joined-subclass>

 <joined-subclass name="org.sakaiproject.lar.model.Equipment" table="vl_equipment">
    <key column="materialId"/>
    <property name="type" type="string">
        <column name="type" length="50" not-null="true">
            <comment></comment>
        </column>
    </property>
    <property name="description" type="string">
        <column name="description" length="100" not-null="true">
            <comment></comment>
        </column>
    </property>
 </joined-subclass>

</class>

Para persistir os dados em um dos filhos, está funcionando corretamente (adiciona um Id no pai tbem, idêntico ao id do filho - o primary key do filho é uma chave estrangeira para o PK do pai)

Meu problema é o seguinte: Se eu faço uma consulta diretamente em material (pai), eu nao consigo fazer a navegacao e saber qual filho é referente àquele pai. Eu consigo simplesmente retornar o Id do pai. Será que meu erro está sendo no model? o model do pai está da seguinte forma:

public class Material implements java.io.Serializable {

private Long materialId;
 private Set equipments = new HashSet(0);
 private Set drugs = new HashSet(0);

Se por exemplo eu consulto o ID=1 no pai, ele me deveria retornar uma droga, e se eu consulto a propriedade size da droga, ele retorna 0.

Alguem tem ideia do que seja?

2 Respostas

H

cara…
Se eu fosse você criaria somente as tabelas vl_drug e vl_equipment…
Descartando a tabela vl_material…

Com isso não precisando ter que mapear a herança no hibernate…
Eu acho que fica bem mais simples assim

D

Cara, acho q vou partir para esse lado mesmo… pensar mais simples! =)
Valew…

haamilton:
cara…
Se eu fosse você criaria somente as tabelas vl_drug e vl_equipment…
Descartando a tabela vl_material…

Com isso não precisando ter que mapear a herança no hibernate…
Eu acho que fica bem mais simples assim

Criado 27 de março de 2008
Ultima resposta 27 de mar. de 2008
Respostas 2
Participantes 2