Olá pessoal,
Estou adaptando um código meu para o meu projeto final e gostaria que vocês me ajudassem numa dúvida.
Eu tenho duas classes:
AbstractUnidade, que contém o atributo nome e outros e a classe UnidadeEstrutura.
E tenho o seguinte mapeamento para isso:
<hibernate-mapping>
<class name="jogo.AbstractUnidade" table="unidade">
<id name="id" type="int">
<column name="idUnidade" />
<generator class="native" />
</id>
<property name="nome" type="string">
<column name="nome" length="25" />
</property>
<property name="qtdTurnos" type="int">
<column name="qtdTurno" />
</property>
<map name="recursos" lazy="true" table="RecursoNecessario">
<key column="idUnidade" />
<index column="nomeRecurso" type="string" />
<element type="int" column="qtdNecessaria" not-null="true" />
</map>
<joined-subclass name="jogo.UnidadeEstrutura" table="unidadeestrutura">
<key column="idUnidade" />
<many-to-one
name="raca"
column="idRaca"
class="jogo.Raca"
not-null="true"
/>
</joined-subclass>
</class>
</hibernate-mapping>
E tenho uma outra classe, chamada Raca, que contém um map de UnidadeEstrutura onde o indice do Map é o nome da Unidade.
O mapeamento atual dela:
<hibernate-mapping>
<class name="jogo.Raca" table="raca" >
<id name="id" type="int">
<column name="idRaca" />
<generator class="native" />
</id>
<property name="nome" type="string">
<column name="nome" length="25" unique="true"/>
</property>
<property name="descricao" type="string">
<column name="descricao" />
</property>
<map
name="estruturas"
lazy="true"
inverse="true"
cascade="save-update"
>
<key column="idRaca" />
<index column="nome" type="string" />
<one-to-many class="jogo.UnidadeEstrutura"/>
</map>
</class>
</hibernate-mapping>
Reparem que dentro do map, o item “index” se refere a um atributo da superclasse “AbstractUnidade” e não da classe “UnidadeEstrutura”. Isso está fazendo o Hibernate dar um erro.
Alguém conhece como eu posso mapear o indice de um map com um atributo de uma super classe?
Muito agradecido!!
Pilot