Pessoal tenho uma duvida,
Categoria 1 x N Produto
Esboço das tabelas:
Tabela Categoria
id_categoria integer,
id_categoria_superior integer
nome varchar
foreign key (id_categoria_superior) references categoria(id_categoria)
Tabela Produto
id_produto
id_categoria
...
foreign key (id_categoria) references categoria(id_categoria)
Seguinte, na jpa eu tenho esse mapeamento
@Entity
@Table(name = "categoria")
public class Categoria
@Column(name = "id_categoria")
@GeneratedValue(strategy = GenerationType.SEQUENCE)
private Integer idCategoria;
@JoinColumn(name = "id_categoria_superior", referencedColumnName = "id_categoria")
@ManyToOne(optional = false, fetch = FetchType.EAGER)
private Categoria categoriaSuperior;
@OneToMany(cascade = CascadeType.ALL, mappedBy = "categoriaSuperior", fetch = FetchType.EAGER)
private List<Categoria> categoriasSuperior;
...
}
@Entity
@Table(name = "produto")
public class Produto {
@JoinColumn(name = "id_categoria", referencedColumnName = "id_categoria")
@ManyToOne(optional = false, fetch = FetchType.LAZY)
private Categoria categoria;
...
}
Até ai eu tenho os seguintes registros de Categorias, vejam que podem ter n níveis de categorias
id_categoria| id_superior | nome
1 | NULL | Veículos
2 | 1 | Carros
3 | 2 | GOL
4 | 3 | Palio
Registros da tabela de Produtos
id_produto | id_categoria | Nome
1 | 3 | GOL 1.4 2009
1 | 4 | Palio 2.0
Minha pergunta é, como fasso em jpql executar uma busca recursiva. No caso se eu pesquisar por “Veículos” ele me retornar todos os produtos de todas categorias filhas relacionadas com o registro “Veículos” que é a categoria mais superior da hierarquia.
Alguem me ajuda, já estou a 3 dias nisso e não consigo resolver, to pensando em abandonar jpa e partir pra queries nativas mesmo ;(, visto que em postgres tem a query with recursive
http://andrecf.kinghost.net/freebsd/postgresql/queries-recursivas-em-postgresql/
Obrigado, e serei muito grato pela ajuda.