Olá,
No mapeamento seguinte:
<class name="Pai" abstract="true">
<id name="id">
<generator class="increment" />
</id>
<union-subclass name="Filho" />
<union-subclass name="Neto">
<many-to-one name="filho"
column="filho_id"
class="Filho" lazy="false" fetch="join" />
</union-subclass>
</class>
O Hibernate monta a SQL corretamente, mas na hora de setar o valor de filho em neto (setFilho), ele tenta passar um objeto do tipo Neto no lugar de um objeto filho e retorna uma WrongClassException.
Se eu mantenho o mesmo mapeamento, usando class invés de union-subclass, funciona perfeitamente.
O que eu posso fazer pra resolver essa questão (o modelo é realmente complexo e utilizar herança nos mapeamentos é imprescindível)