Estou tentando mapear herança no hibernate, considerando que na tabela filha(Funcionario), pode haver 1 ou + ocorrências de registros da tabela pai(Pessoa). Resumindo, uma pessoa pode ter várias matrículas(distintas) na tabela de Funcionario.
PessoaDTO.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping package="br.gov.rr.tj.sistemas.sarh.dto" schema="sarh">
<class name="PessoaDTO" table="rh_pessoal">
<!-- Identificador -->
<id name="cpf" column="pess_c_p_f" />
<!-- Propriedades -->
<property name="nome" column="pess_nome" />
<property name="nascimento" column="pess_nascimento" />
</class>
</hibernate-mapping>
FuncionarioDTO.hbm.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping
PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
<hibernate-mapping package="br.gov.rr.tj.sistemas.sarh.dto" schema="sarh">
<joined-subclass name="FuncionarioDTO" extends="PessoaDTO"
table="rh_funcionario">
<key column="func_pess_c_p_f" />
<!-- Propriedades -->
<property name="matricula" column="func_cod_funcionario" />
<property name="dataNomeacao" column="func_dat_nomeacao" />
<property name="dataPosse" column="func_dat_posse" />
<property name="dataInicioExercicio" column="func_dat_inic_exercicio" />
<property name="dataDesligamento" column="func_dat_deslig" />
<!-- Outras propriedades -->
...
</joined-subclass>
</hibernate-mapping>
O Mapeamento acima, retorna a quantidade de registros correta, porém repete os registros para as Pessoas que possuem mais de uma matrícula.
Exemplo:
Pessoa: Fulano da Silva
Matrículas: 1 - Analista de Sistemas, 2 - Administrador
Neste caso retorna duas vezes a matricula 1 - Analista de Sistemas.
Agradeço a ajuda.