Gravando Pelo Hibernate mas não aparecendo no DataTable

Pessoal, estou com um problema na atualização dos dados gravados no meu sistema. O sistema foi desenvolvido com Java, Hibernate e Primefaces e banco de dados MySql.
O problema é que as vezes quando gravo uma informação esta informção não e´atualizada no DataTable. Ex.:
Tenho um programa que grava notas fiscais, e estas notas podem ser canceladas. Quando faço o cancelamento, o sistema deve excluir o titulo gerado, retirar a mercadoria do estoque e se for proveniente de pedido deve atulizar o saldo de quantidade de produtos entregues. O problema é que mesmo o titulo sendo excluido e o saldo do estoque atualizado, ao entrar nas DataTables de titulos e estoque o saldo continua errado. (Mas no banco de dados esta certo).
Ai para ficar com os dados atualizados tenho que reiniciar o servidor.
Segue abaixo o código para salvar estas alterações.

public void cancelarNotaFiscal(NotaFiscal notaFiscal, List<Titulo> titulosASeremExcluidos,
		List<ItemDoPedido> itensDoPedido, List<ItemDoAlmoxarifado> itensDoAlmoxarifado,
		List<MovimentacaoContabil> movimentacoesContabeis) {

	Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
	Transaction transacao = null;
	try {
		transacao = sessao.beginTransaction();
		
		if (titulosASeremExcluidos!= null && titulosASeremExcluidos.size() > 0) {
			for (Titulo tit : titulosASeremExcluidos) {
				sessao.delete(tit);
			}
		}

		if (itensDoPedido != null && itensDoPedido.size() > 0) {
			for (ItemDoPedido item : itensDoPedido) {
				sessao.update(item);
			}
		}

		if (itensDoAlmoxarifado != null && itensDoAlmoxarifado.size() > 0) {
			for (ItemDoAlmoxarifado item : itensDoAlmoxarifado) {
				sessao.update(item);
			}
		}

		if (movimentacoesContabeis != null && movimentacoesContabeis.size() > 0) {
			for (MovimentacaoContabil movCont : movimentacoesContabeis) {
				sessao.update(movCont);
			}
		}

		if (notaFiscal.getItensDaNotaFiscal() != null) {
			for (ItemDaNotaFiscal itemNF : notaFiscal.getItensDaNotaFiscal()) {
				sessao.delete(itemNF);
			}
		}
		
		notaFiscal.setStatus('C');
		sessao.update(notaFiscal);
		sessao.flush();
		transacao.commit();
	} catch (RuntimeException erro) {
		transacao.rollback();
		throw erro;
	} finally {
		sessao.close();
	}
}

Obs.: Preciso muito resolver este problema pois esta me gerando um transtorno enorme.Caso alguem tenha interesse em analisar melhor o codigo podemos alinhar um valor para esta consultoria.

Antonio,

Pelo que você relatou o problema é que não está buscando os dados no banco.
Depois de cancelar as notas fiscais, você faz a busca dos dados novamente?

Concordo com o @matheusYudi.
Posta o código que carrega os dados que as tais dataTables usam

Depois que faço o cancelamento da NF vou no programa de Almoxarifados onde ele busca os almoxarifados e lista todos eles com seus produtos no rowExpendive.
Abaixo os codigos quando é carregado a tela de almoxarifados.
@PostConstruct
public void startDeTela() {
AlmoxarifadoDAO almoxarifadoDAO = new AlmoxarifadoDAO();
almoxarifados = almoxarifadoDAO.listar();
}

Esse almoxarifadoDAO.listar() vem de uma classe DAO Generica.

	@SuppressWarnings("unchecked")
public List<Entidade> listar(){
	Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();
	try{
		Criteria consulta = sessao.createCriteria(classe);
		List<Entidade> resultado = consulta.list(); 
		return resultado;
	}catch(RuntimeException erro){
		throw erro;
	}finally{
		sessao.close();
	}
}

Boa tarde!

Pelo que eu vi, você só chama o listar através do método startDeTela, que vai ser executado quando o bean for criado.

Caso o seu bean seja de escopo de sessão, esse método só vai ser executado uma vez durante a vida da sessão.

Por acaso o seu bean é SessionScoped?

Posta o código xhtml se puder, se não só a datatable

Mike ele é @ViewScoped

Se vc depurar o managedbean e a lista que popula a tabela estiver atualizar, acredito que esteja faltando dá um render no componente.

Lucas pior que quando ele faz a pesquisa ele esta retornando o valor sem o registro que acabei de gavar. Mas consultando o banco o registro esta lá.
Detalhe é que se eu reinicio o servidor e abro a mesma tela ele aparece certinho com o novo registro.

Isso, se estiver retornando o valor, mas o componente na tela não estiver sendo atualizado (render), não vai refletir esses valores atualizados.

no jsf 1, fazia um reRender, no jsf 2 já eh um render (eu acho).

Vou Debugar novamente e confirmar como esta chegando. Mas a ultima vez que fiz o Hibernate estava retornando o valor desatualizado. E o (render) eu coloco no DataTable ?

Bom, se o hibernate está trazendo desatualizado, vc pode verificar tb se está rolando alguma transação na hora de salvar os dados na tabela.

O render vc colcoca no lugar onde fica a ação que atualiza os dados, e coloca o ID da datatable que será atualizada.

Vou dar uma verificada como esta a transação no momento de salvar os dados. A questão do render ele deveria atualizar minha tabela ao startar a tela, porque quando cancelo a NF eu fecho a tela e abro outra de Almoxarifados.