Problemas ao deletar um dado usando jpa

Estou com o seguinte problema:
Tenho a seguinte parte de código:

[code]

public static final String HISTORICO_PRODUTO = "historicoProduto";
@OneToMany(cascade=CascadeType.ALL,mappedBy = "agenda")

@JoinColumns({@JoinColumn(name = "CODAGENDA",referencedColumnName="CODAGENDA")})
private List<HistoricoProduto> historicoProduto;

public static final String HISTORICO_SERVICO = "historicoServico";
@OneToMany(cascade=CascadeType.ALL,mappedBy = "agenda")
@JoinTable(
         name = "HISTORICOSERVICO",
         joinColumns = {@JoinColumn(name = "CODAGENDA",referencedColumnName="CODAGENDA")},
         inverseJoinColumns = {@JoinColumn(name = "CODAGENDA",referencedColumnName="CODAGENDA")}
    )	    
private List<HistoricoServico> historicoServico;[/code]

O metodo que exclui o dado é o seguinte:

public void exclui(Object obj) { EntityTransaction t = em.getTransaction(); t.begin(); em.remove(obj); em.flush(); t.commit(); }

Existem outras duas classes que são de produtos e serviços
Numa outra classe de venda, eu adiciono vários produtos e serviços, mas depois de gravado esse dado, eu tento excluir ele, mas não exclui continua referenciando aquele produto. Usei a notação do CascadeType.all, mas não resolveu, não sei o que pode ser. Alguém pode dar um help?