bom dia Gente,
seguinte, gostaria de realizar uma consulta para montar uma árvore. Tenho as seguintes entidades:
@Entity
public class Node {
@Id
@GeneratedValue
@Column(name = "NODE_ID")
private Integer id;
@JoinColumn(name = "PARENT_ID", referencedColumnName = "NODE_ID")
@ManyToOne(optional = true, fetch = FetchType.EAGER)
private Node parent;
@JoinColumn(name = "DOCUMENTO_ID", updatable = false, referencedColumnName = "DOCUMENTO_ID")
@ManyToOne(optional = false, fetch = FetchType.EAGER)
private Document document;
@OneToMany(cascade = CascadeType.REMOVE, fetch = FetchType.EAGER, mappedBy = "parent", orphanRemoval = true)
private List<Node> children;
// getts e setts
}
e
@Entity
public class Document {
@Id
@GeneratedValue
@Column(name = "DOCUMENTO_ID")
private Integer id;
@Column(name = "NOME")
private String nome;
@Column(name = "CONTEUDO")
private String conteudo;
// getts e setts
}
Agora, preciso recuperar Node com seus filhos. Para isto estou fazendo a consulta assim:
List<Node> nodes = entityManager.createQuery("select n from Node n " +
" where n.document.id = :idDocumento " +
" order by n.id asc")
.setParameter("idDocumento", idDocumento)
.getResultList();
Só que esta consulta só está trazendo o nó pai. Quero que traga os filhos também. Tem como fazer utilizando hql? Como se faz? :? desde já, agradeço!!