HIbernate e recursividade

Galera seguinte to ficando doido estou desenvolvendo um sistema e ele utiliza recursividade
e nao sei como fazer no hibernate presciso de ajuda vejam bem

Na classe Associados vou usar logica recursiva

tem alguns campos

o IdAssociado (Filho)
e o IdIndicado (Pai)

como faço uma consulta recursiva com hibernate

Estou usando o hibernate annottations + vraptor + jsp

Cara,
vou te passar um exemplo semelhante que funciona aqui pra mim…
No caso de Cadastros de menu, um menu pode ter sub-menus, o que também é recursivo como no seu exemplo, e anotamos a classe da seguinte maneira…

@Entity
@Table(name="menu")
public class Menu implements Serializable{

	private Integer id;
	
	private String nome;
	private String className;
	
	private Menu menuPai;
	
	public Menu() {
		
	}

	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	@Column(name="id_menu")
	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	@Column(nullable=false, length=50)
	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	@Column(nullable=false, length=100)
	public String getClassName() {
		return className;
	}

	public void setClassName(String className) {
		this.className = className;
	}

	
	@ManyToOne
	@JoinColumn(name="id_menu_pai", insertable=false, updatable=false, nullable=true)
	public Menu getMenuPai() {
		return menuPai;
	}
}

espero que ajude

[]'s

Então Imprates eu ja anotei as classes esta funcionando so presciso sabe como faço as consultas mesmo entende

@Entity
public class Associado{

	// Fields
	@Id
	@GeneratedValue
	private Long idAssociado;
	//private Integer idConveniado;
	//private String assoCodHierarquia;
	private Long idIndicado;

	//@OneToOne
	//@JoinColumn(name="idIndicado")
	//private Associado idIndicado;
       // (aqui tenho duvida se faço a anotacao dessa forma ou como esta criando apenas um Long que recebe o id, do jeito que esta cadastra normalmente!!! me digam ai se e necessario que eu faço da segunda forma pois nao consegui fazer funcionar da segunda forma rsrs.

setter and getters 
}

então e sobre a consulta sei que vou ter que usar sql native pois parece me que hql nao tem consultas recursivas certo!!!

então alguem? me ajudem ai por favor!

O tópico é antigo, mas cheguei nesse mesmo problema.

Tenho uma consulta para o Banco DB2 que é recursiva. Não tenho nem idéia como fazer no hibernate isso.

Se alguém já utilizou algo, posta umas dicas ai, valeu.

bom, eu fiz o seguinte: eu tenho um funcionario, e ele tem um superior, que também é um funcionário. não consegui fazer consulta recursiva, tive que colocar uma lógica no dao pra fazer funcionar (Vide POG no google, :lol: )

        /**
         * Obtém uma lista com todos subordinados do colaborador. inclui também subordinários 
         * temporários, por substituição/ausencia do titular.
         * 
         * @param superior Colaborador superior
         * @return Lista dos colaboradores abaixo do superior informado
         */
         @SuppressWarnings("unchecked")
        public List<Colaborador> listSubordinados(Colaborador superior){
                List<Colaborador> lista = new ArrayList<Colaborador>();
                List<Colaborador> listaSubstituto = new ArrayList<Colaborador>();
                List<Long> ids = new ArrayList<Long>();

                DetachedCriteria critSubst = DetachedCriteria.forClass(Colaborador.class);
                critSubst.add(Restrictions.eq("colaboradorSubstituto.id", superior.getId()));

                listaSubstituto = (List<Colaborador>) hibernateTemplate.findByCriteria(critSubst);
                ids.add(superior.getId());

                for (Colaborador c : listaSubstituto) {
                        ids.add(c.getId());

                }

                DetachedCriteria crit = DetachedCriteria.forClass(Colaborador.class);
                crit.add(Restrictions.in("colaboradorImediato.id", ids));
                crit.addOrder(Order.asc("nome"));
                lista.addAll((List<Colaborador>) hibernateTemplate.findByCriteria(crit));

                return lista;

        }

não consegui fazer de outro jeito que não fosse com duas consultas

[quote=romarcio]O tópico é antigo, mas cheguei nesse mesmo problema.

Tenho uma consulta para o Banco DB2 que é recursiva. Não tenho nem idéia como fazer no hibernate isso.

Se alguém já utilizou algo, posta umas dicas ai, valeu.[/quote]

Que eu saiba não tem como, a menos que use uma linguagem de consulta lógica ao inves de SQL.

Pois eh, acabei usando o sql-query no mesmo arquivo do mapeamento do hibernate.
Dai posso pegar o parametro que preciso de um campo que faz parte do mapeamento.

<sql-query name="DebitosAnteriores">
            <return-scalar column="ANO_EXERCICIO" type="integer"/>
            .
            aqui vai a query rescursiva, normal como se fosse executada no banco.
            .
</sql-query>