Tenho a seguinte classe (a persistência está ok e tudo mais):
@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE)
@Column(name = "id_area", nullable = false)
private Integer idArea;
@Column(name = "DS_SIGLA", nullable = false)
private String sigla;
@Column(name = "DS_NOME", nullable = false)
private String descricao;
@JoinColumn(name = "id_responsavel", referencedColumnName = "id_usuario")
@ManyToOne(fetch= FetchType.EAGER)
private Usuario responsavel;
@Column(name = "FL_ATIVO", nullable = false)
private Integer status;
@Column(name = "DT_INCLUSAO", nullable = false)
@Temporal(TemporalType.TIMESTAMP)
private Date dtInclusao;
@ManyToMany(fetch = FetchType.EAGER, cascade= { CascadeType.PERSIST, CascadeType.MERGE }, mappedBy = "areaList", targetEntity=Usuario.class)
@JoinTable(name = "AREA_USUARIO",
joinColumns = {@JoinColumn(name="id_area")},
inverseJoinColumns = {@JoinColumn(name="id_usuario")}
)
private List<Usuario> usuarioList;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "id_area_pai", referencedColumnName = "id_area")
private Area areaPai;
Tenho que fazer uma função recursiva que me traga os filhos, netos, bisnetos e tataranetos… da área informada. Fiz uma função, entretanto, está trazendo somente os filhos (não está ok):
public AreaEstruturaTO recursao(Area a, AreaEstruturaTO to) {
int count = -1;
for (Area area : listAreasFilhas(a.getIdArea())) {
if (area.getAreaPai() != null && area.getAreaPai().getIdArea().equals(a.getIdArea())) {
if (to.getAreasFilhas() == null) {
to.setAreasFilhas(listAreaToEstruturaTO(listAreasFilhas(area.getIdArea())));
}
areaToAreaEstruturaTO(to, a);
to.getAreasFilhas().add(areaToAreaEstruturaTO(area));
}
count++;
recursao(area, to.getAreasFilhas().get(count));
}
return to;
}
Alguém pode me ajudar?