Deletar em Collection

Olá pessoal,

Não estou conseguindo deletar registro em uma collection. Quando peço para deletar, o registro some do dataModel, mas nao sai do banco de dados e qdo executo novamente a query ele aparece.

Bean Followpup

	@ManyToOne 
	@JoinColumn(name="processo", referencedColumnName="nref", insertable=false, updatable=false)
	private AbreProcesso abreProcesso;

Bean AbreProcesso

	@OneToMany(mappedBy="abreProcesso",
			   cascade=CascadeType.ALL, fetch = FetchType.EAGER)
	@OrderBy("insert_data desc")
        @Fetch(FetchMode.SELECT)
	private Collection<Followup> followup;

Código para selecionar o followp no dataModel

	public void selectRegFlp(){
		removeFlp = (Followup) dmFlp.getRowData();
		System.out.println(removeFlp.getObservacoes());
	}

Código para deletar o processo selecionado no dataModel ( Aqui ele não deleta! )

    	    EntityManagerFactory emf = EntityManagerProvider.getEntityManagerFactory();
    	    EntityManager em = emf.createEntityManager();
	    
            em.getTransaction().begin();
	    AbreProcesso.remove(removeFlp);		
	    em.merge( modelo );
				
	    em.getTransaction().commit();
	    em.close();

Fala ae apalmeira.

Então… não entendi o seu código na parte do “para deletar o processo selecionado no dataModel”.
Que método remove é esse? é static mesmo? E a variável modelo.

Agora… quanto ao mapeamento, está correto (era pra poder deletar).
Não tem nenhum problema nessa chamada “remove”? será que ela não está trabalhando em outra transação (ao invés da que você criou)?

Dá uma olhada nisso, ou posta mais código ai. (se puder)

Abraço

Desculpe o código correto para deletar é esse:

EntityManagerFactory emf = EntityManagerProvider.getEntityManagerFactory();  
EntityManager em = emf.createEntityManager();  

em.getTransaction().begin();  
// getFollowp é a collection. eu dou um remove nela e passo o objeto que deve ser removido. Está certo?
AbreProcesso.getFollowup().remove(removeFlp);    
em.merge( modelo );  

em.getTransaction().commit();  
em.close();  

O caso do dataModel, eu coloco a collection no DataModel para poder trabalhar no JSF, pois com o mesmo eu consigo dar um getRowData para retornar o objeto que o usuário que alterar. depois passo esse objeto no metodo acima para remover.
NÃO SEI SE ESSA É A MELHOR FORMA DE FAZER ISSO, SUJESTÕES SÃO MUITO BEM VINDAS!

Vlw

Pessoal

Assim funcionou!

É assim mesmo que deve ser feito, ou tem uma forma melhor?

Obrigado!

EntityManagerFactory emf = EntityManagerProvider.getEntityManagerFactory();
EntityManager em = emf.createEntityManager();
   	    
abreProcesso.getFollowup().remove(removeFlp);
    	    
em.getTransaction().begin();
  // Tive que dar um merge para o objeto ir para persistent. (Está correto?)
  removeFlp = em.merge(removeFlp);
  em.remove(removeFlp);
  em.merge( ((AbreProcesso)modelo) );
em.getTransaction().commit();

em.close();