Consulta Pelo Hibernate Não Retorna Item Inserido

3 respostas
AntonioCardoso
Tenho uma aplicação desenvolvida em Java com Prime Faces e Hibernate, banco de dados MySql. Um dos programas é o lançamento de notas fiscais, onde o usuário informa os dados principais da nota sendo que depois de salvar estes dados o sistema libera uma aba para inserção dos itens. Nesta aba (de itens) tenho os dados do item e conforme o usuário manda salvar este item é salvo no banco 1 a 1 e a cada inseção, atualiza um DataTable. Toda vez que o item é salvo é chamado o método abaixo para atualizar a lista de Itens da Nota Fiscal.

@SuppressWarnings(unchecked)

public List listaItensPorNotaFiscal(Long codigoDaNotaFiscal) {

Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();

try {

Criteria consulta = sessao.createCriteria(ItemDaNotaFiscal.class);

consulta.add(Restrictions.eq(notaFiscal.codigo, codigoDaNotaFiscal));

List resultado = consulta.list();

return resultado;

} catch (RuntimeException erro) {

throw erro;

} finally {

sessao.close();

}

}
Abaixo segue o método que utilizo para salvar o item da nota.

public void merge(ItemDaNotaFiscal itemDaNotaFiscal, ItemDoAlmoxarifado itemDoAlmoxarifado, ItemDoPedido itemDoPedido, ValidadeLote validadeLote, MovimentacaoContabil movimentacaoContabil) {

Session sessao = HibernateUtil.getFabricaDeSessoes().openSession();

Transaction transacao = null;

try {

transacao = sessao.beginTransaction();
Long codigoItemDaNotaFiscal = (Long) sessao.save(itemDaNotaFiscal);
		sessao.flush();
		itemDaNotaFiscal = (ItemDaNotaFiscal) sessao.get(ItemDaNotaFiscal.class, codigoItemDaNotaFiscal);

		if (itemDoAlmoxarifado != null) {
			if (itemDoAlmoxarifado.getCodigo() == null) {
				sessao.save(itemDoAlmoxarifado);
			} else {
				sessao.update(itemDoAlmoxarifado);
			}
		}

		if (itemDoPedido != null) {
			sessao.update(itemDoPedido);
		}

		if (validadeLote != null) {
			if (validadeLote.getCodigo() == null) {
				sessao.save(validadeLote);
			} else {
				sessao.update(validadeLote);
			}
		}

		if (movimentacaoContabil != null) {
			if(itemDaNotaFiscal.getNotaFiscal() != null && itemDaNotaFiscal.getNotaFiscal().getTipoDeOperacao() == 'S') {
				movimentacaoContabil.setCentroDeCusto(null);
				movimentacaoContabil.setSafra(null);
			}
			movimentacaoContabil.setItemDaNotaFiscal(itemDaNotaFiscal);
			sessao.save(movimentacaoContabil);
		}
		transacao.commit();
	} catch (Exception erro) {
		if (transacao != null)
			transacao.rollback();
		throw erro;
	} finally {
		sessao.close();
	}
}

3 Respostas

darlan_machado

Exceção? Mensagem de erro? Está salvando adequadamente?

AntonioCardoso

Darlan, não esta dando nenhuma exceção. E confirmei no banco o item esta salva corretamente. Eu fiz um video debugando o método e demonstrando o erro. Se quiser e puder eu posso compartilhar a pasta com você. Nesta pasta eu demonstro os dois erros que esta acontecendo que eu abri chamado. Este de não atualizar a lista e um referente a não abrir meu relatório.

AntonioCardoso

Se quiser ver o video para ter uma idéia melhor dos problemas, segue o link. https://drive.google.com/drive/folders/0B2lev_rer1UYTW9YSzBUSUh6Qlk?usp=sharing

Criado 22 de setembro de 2018
Ultima resposta 26 de set. de 2018
Respostas 3
Participantes 2