[Hibernate] Problemas com auto-relacionamento simples [RESOLVIDO]

Boa noite amigos do GUJ, tudo bom?

Estou tentando mapear um auto-relacionamento (usando Hibernate), mas não está dando certo.

Minha classe está assim:

[code]public class Capitulo {
private Long idCapitulo;
private String titulo;
private Set subCapitulos = new HashSet();
private Capitulo capituloPai;

//aqui vão: contrutor, setters e getters…
}[/code]

O problema é que quando eu tento pegar qualquer objeto do Set “SubCapitulos”, o objeto que obtenho é o proprio objeto capitulo.

Meu mapeamento está assim:

[code]<hibernate-mapping>
<class name=“model.Capitulo” table=“capitulo”>

    	&lt;id name="idCapitulo"&gt;&lt;generator class="native"/&gt;&lt;/id&gt;
	&lt;property name="titulo"/&gt;


	&lt;set name="subCapitulos" table="capitulo" lazy="true" cascade="all"&gt;
		&lt;key column="idCapitulo" foreign-key="FK_idCapituloPai"/&gt;
		&lt;one-to-many class="model.Capitulo"/&gt;
	&lt;/set&gt;

	&lt;many-to-one class="model.Capitulo" name="capituloPai" column="capituloPai" foreign-key="FK_idCapituloPai" not-null="false"/&gt;


&lt;/class&gt;

</hibernate-mapping>[/code]

Fazendo o seguinte teste:

[pagina_teste.jsp]

[code]Session sessao = HibernateUtil.getSessionFactory().getCurrentSession();
sessao.beginTransaction();

Capitulo capitulo = (Capitulo) sessao.load(Capitulo.class, (long) 1);
Iterator it = capitulo.getSubCapitulos().iterator();
while (it.hasNext()) {
Capitulo subCapitulo = (Capitulo) it.next();
out.print(capitulo.equals(subCapitulo));
}[/code]

O resultado dessa JSP é:

Alguém sabe o que está errado?

Obrigado.
Lucas Catón.

Já experimentou trocar:

por

Hum… minha tabela agora ficou assim:

Ele criu uma coluna “FK_idCapituloPai”, acho que não era pra acontecer isso, era?!

Pra testar, eu inclui um subcapitulo (2º registro da tabela acima), porém, usando o método capitulo.getSubCapitulos, retornou um Set vazio… :frowning:

Pessoal, resolvi o problema.

Eu simplesmente retirei da tag “key” a propriedade foreign-key.

Ou seja, alterei de:

Para:

Logo, o Set inteiro ficou assim:

&lt;set name="subCapitulos" table="capitulo" lazy="true" cascade="all"&gt; &lt;key column="capituloPai"/&gt; &lt;one-to-many class="model.Capitulo"/&gt; &lt;/set&gt;

Obrigados especiais ao Domingos Neto, que me ajudou.
Até a próxima. Abraços.