Porque não está deletando registro JPA?

O erro que tá acontencendo é que não está deletando o dependente da PessoaFisica, mais abaixo coloquei as Entidades e depois no final as tabelas
no trecho na entidade Dependente tinha @ManyToOne(cascade = CascadeType.ALL) ai deletava, mas deletava pessoaFisica também quando deletava o dependente, tentei jogar ali CascadeType.MERGE, REFRESH, e nada… alguém saberia o porque não deleta???, não dá erro nenhum.

Fiz até uma classe aparte para testar


private EntityManagerFactory factory;
   
   private EntityManager manager;

   
   public static void main(String[] args)
   {
      TesteClasse testeClasse = new TesteClasse();
      PessoaFisica pessoaFisica = testeClasse.busca(2);
      
      List<Dependente> lista = pessoaFisica.getDependentes();
      Dependente dependente = lista.get(0);
// tá pegando e removendo certinho
      pessoaFisica.getDependentes().remove(dependente);
          
      
      testeClasse.alterarCadastro(pessoaFisica);
      
   
   }
   public PessoaFisica busca(Integer id)
   {
      factory = Persistence.createEntityManagerFactory("banco");
      manager = factory.createEntityManager();
   
      PessoaFisica pessoaFisica = manager.find(PessoaFisica.class, id);
         
      return pessoaFisica;
      
   }
   public boolean alterarCadastro(PessoaFisica pessoaFisica)
   {
      
      factory = Persistence.createEntityManagerFactory("banco");
      manager = factory.createEntityManager();
      
      EntityTransaction tx = manager.getTransaction();
      tx.begin();
      try
      {
         pessoaFisica = manager.merge(pessoaFisica);
         
         manager.persist(pessoaFisica);
         manager.flush();
         manager.clear();
         tx.commit();
      
      }
      catch (RuntimeException e)
      {
         tx.rollback();
         JOptionPane.showMessageDialog(null, e, "Erro!", 0);
         
         manager.close();
         factory.close();
         
         return false;
      }
      manager.close();
      factory.close();
      return true;
   }

@Entity
@Table(name = "dependentes")
public class Dependente
{
   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   @Column(name = "id_dependentes", nullable = false)
   private Integer idDependentes;
   
   @Column(nullable = false)
   private String nome;
      
   @ManyToOne
   @JoinColumn(name = "id_pessoa_fis")
   private PessoaFisica pessoaFisica;
   
   // get e set

    public boolean equals(Object obj){
         if(obj != null && obj instanceof Dependente){
            Dependente dep = (Dependente) obj;

            return getIdDependentes()==dep.getIdDependentes();
         }

         return false;
      }

      public int hashCode(){
         return Integer.valueOf(getIdDependentes()).hashCode()*31;
      }
}

@Entity
@Table(name = "pessoa_fisica")
public class PessoaFisica
{
   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   @Column(name = "id_pessoa_fisica", nullable = false)
   private Integer idPessoaFisica;
   
   @Column(nullable = false)
   private String nome;
   
   @OneToMany(mappedBy="pessoaFisica", cascade = CascadeType.ALL, fetch=FetchType.EAGER)
   private List<Dependente> dependentes;

 // get e set

Na tabela
–pessoa_fisica–
id_pessoa_fisica pk
nome

–Dependente–
id_dependente pk
nome
id_pessoa_fis fk