Fala feras 
To aqui quebrando a cabeça para desenvolver uma função mas está um pouco complicado. Tenho um objeto que armazena registros pais e filhos, mas um filho, pode ter um neto e este neto pode ter um filho e este, pode ter outro filho e etc. Não existe um limite que possa ter.
Ex.:
Pai ( Registro Principal ): Id - 1
Filho X do Pai: Id 2 / Id do Pai 1
Filho A do X - Id 10 / Id do Pai 2
Filho B do X - Id 13 / Id do Pai 2
Filho G do A - Id 11 / Id do Pai 10
E etc
Minha dúvida é como criar um looping para fazer essas buscas. Atualmente, estou utilizando JPA e tenho uma coleção no Objeto:
@OneToMany(mappedBy="rqFatherId", fetch=FetchType.EAGER)
private Collection<RequerimentoTO> filhos;
Essa coleção me retorna todos os resultados e se eu for navegando entre as listas de cada objeto, eu tenho todos os resultados com seus respectivos filhos. Meu problema, está bem na hora que vou montar um loop para começar a criar um outro tipo de objeto pq eu posso ter N objetos dentro de uma lista e dentro de um objeto, eu posso ter uma outra lista e assim sucessivamente. Existe alguma maneira de montar isso? Eu travei nessa parte:
requerimentos = requerimentoDelegate.buscarRequerimentos();
boolean buscarFilhos = true;
for(RequerimentoTO requerimentoTO : requerimentos){
DefaultMutableTreeNode node = new DefaultMutableTreeNode(requerimentoTO);
// Nesse looping, eu obtenho o primeiro nível do objeto mas não sei quantos níveis vou ter pq eu posso ter uma outra lista dentro desse requeimentoTO e dentro dessa lista, eu posso ter um objeto com outra lista e assim sucessivamente
root.insert(node);
}
Tem alguma maneira de eu fazer isso?