JPA: Delete

7 respostas
R

Prezados,

estou iniciando o aprendizado em JPA e estou esbarrando em algumas coisas que parecem simples mas que estão me tirando o sono.

Meu problema é o seguinte:

Tenho um pojo SISTEMA que contém uma lista de pojo MODULOS
@OneToMany(cascade=CascadeType.ALL, mappedBy="sistema")
	public List<Modulo> getModulos() {
		return Modulos;
	}


	public void setModulos(List<Modulo> modulos) {
		Modulos = modulos;
	}

Quando realizo o delete de um dos MODULOS da lista, este é eliminado do banco de dados mas da lista não. Só quando reinicio o TOMCAT que ele "enxerga" a alteração.

Alguém sabe como posso resolver esse problema?

Muito obrigado.

7 Respostas

vhuzalo

Existe um método do EntityManager chamado refresh(Object o) que atualiza inclusive um relacionamento bidirecional.

:thumbup:

ddduran

Pode ser tambem que você não tenha dado o commit na sua transação.

ddduran

Pode ser tambem que você não tenha dado o commit na sua transação.

R

Estou dando commit sim, tanto que o registro é excluído do banco de dados.

R
vhuzalo:
Existe um método do EntityManager chamado refresh(Object o) que atualiza inclusive um relacionamento bidirecional.

:thumbup:

Tentei usá-lo, porém ocorre o erro:
Can not refresh not managed object:

O trecho de código é este:

Sistema sistema = sistemaService.getSistema(new Integer(5));
		List aux = new ArrayList();
		String teste = aux_id_modulo;
		sistemaService.delModulo(Integer.parseInt(aux_id_modulo));
		
		sistemaService.refresh(sistema);
ddduran

verifique como você ta carregando o objeto, se ele não ta detached, seu metodo para deletar não deveria receber o proprio sistema?

vhuzalo

Ricardo

Utilize o CascadeType.REFRESH em vez de ALL

:thumbup:

Criado 17 de setembro de 2007
Ultima resposta 18 de set. de 2007
Respostas 7
Participantes 3