Como recuperar associações no hibernate dentro da mesma transação?

1 resposta
antoniopopete
Tenho o seguinte código:
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.

O autorelacionamento está feito da seguinte maneira:
@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;
Como faço para trazer todos conceitos filhos que foi salvo na mesma transação? Já tentei usar cascade de outro tipo e não funcionou, alguém sabe como resolver para trazer os conceitos filhos associados a um pai nessa situação?

p.s. - essas operações estão dentro de uma mesma transação gerenciada pelo spring.

1 Resposta

antoniopopete

Testei com todos os tipos de cascade mudando na coleção, mesmo assim não adiantou.
Alguém tem outra idéia do que possa ser?

Criado 20 de maio de 2008
Ultima resposta 20 de mai. de 2008
Respostas 1
Participantes 1