public void save(TaxonomiaModel taxonomiaModel,List<ConceitoModel> conceitos) {
Long id = (Long) taxonomiaDAO.save(taxonomiaModel);
//necessário para tirar do estado transient...
taxonomiaModel = taxonomiaDAO.load(id);
conceitoService.saveAll(conceitos, taxonomiaModel); //salvo os conceitos pai e filhos
this.updateTaxonomiaXML(taxonomiaModel);
}
public void updateTaxonomiaXML(TaxonomiaModel taxonomiaModel){
List<ConceitoModel> conceitosPersistidos = conceitoService.getByTaxonomia(taxonomiaModel); //aqui tento recuperar todos conceitos persistidos, com seus respectivos filhos
String treeXml = new GenerateTreebolicXML().drawTree(conceitosPersistidos);
taxonomiaModel.setTaxonomiaXML(new ClobImpl(treeXml));
taxonomiaDAO.update(taxonomiaModel);
}
Como podem ver, na linha comentada, ele deveria trazer os filhos que foram atualizado em conceito.saveAll
mas debugando, só traz null todos os filhso.
@ManyToOne(fetch = FetchType.EAGER,cascade={CascadeType.PERSIST,CascadeType.MERGE})
@JoinColumn(name = "CONCEITO_ID_PAI",insertable = false, updatable = false)
@Fetch(FetchMode.JOIN)
private ConceitoModel conceitoPai;
@OneToMany(mappedBy = "conceitoPai", fetch = FetchType.LAZY,cascade=CascadeType.ALL)
private List<ConceitoModel> conceitosFilhos;
p.s. - essas operações estão dentro de uma mesma transação gerenciada pelo spring.