JPA - Remover intens de uma lista

3 respostas
spycall

Olá, tenho um Objeto que contem uma lista de outros objetos:
Por exemplo tenho um objeto NOTA_FISCAL com uma lista de 10 objetos ITEM.

Faço um merge no objeto NOTA_FISCAL que teve 2 ITEM removidos, o JPA está fazendo as alterações mas não está removendo os objetos ITEM do banco.

Alguem sabe se ele faz isso ou terei que remove-los antes de fazer o merge.

3 Respostas

ronnypeterson

vc deve colocar na classe de modelo NOTA_FISCAL um método para remover o item…exemplo:

/**
 * Remove um item
 * @param item
 */
  public void removeItem(Item_Nota item) //Recebe como parâmetro o item q vc deseja remover
  {
	//Exclui item do relacionamento
	itens.remove(item);	//itens é um Lista de itens da nota	
  }

Espero ter ajudado.

rafagil

na hora de mapear o relacionamento, vc deve colocar a opção Cascade. Já fez isso?

spycall

opa, já sim

@OneToMany(mappedBy="contractDomain", cascade=CascadeType.ALL, fetch=FetchType.EAGER) private List<ContractActionDomain> listContractActionDomain;

consegui resolver, mas acho que a solução está porca

contractDomain = em.find(ContractDomain.class, contractDomain.getIdContract()); //Como estava no banco for (ContractActionDomain element : contractDomain.getListContractActionDomain()) { if(!contractDomainAux.getListContractActionDomain().contains(element)) //se não existir na lista ayual, remove em.remove(element); } em.merge(contractDomain);

Criado 10 de setembro de 2007
Ultima resposta 10 de set. de 2007
Respostas 3
Participantes 3