JPA não atualiza registro filhos

Estou com um probleminha com o JPA que é o seguinte, eu tenho a classe ModeloEstoquePecas, aonde teoricamente preciso deletar tudo primeiro, que são os registros filhos da classe EstoquePecas, com o código abaixo que eu vou estar colocando o que acontece e não consigo resolver ele teoricamente deleta, mais na hora que vai excluir o registro pai que é o EstoquePecas ele encontra os registros filhos e dá erro para excluir por causa que ele achou os filhos, como resolver essa situação.

public List<ModeloEstoquePecas> destroyByCodigoEstoquePecas (List<ModeloEstoquePecas> listaModeloEstoquePecas) {
    
    EntityManager em = getEntityManager();
    
    if (listaModeloEstoquePecas != null) {
        
        try {
            
            em.getTransaction().begin();
        
            for (ModeloEstoquePecas modeloEstoquePeca : listaModeloEstoquePecas) {
                
                modeloEstoquePeca = em.merge(modeloEstoquePeca);
                em.remove(modeloEstoquePeca);
            }
            
            em.flush();
            em.getTransaction().commit();
            
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }  finally {
            em.close();
        }
    }

    return listaModeloEstoquePecas;
}

Log:

br.com.escconsultoria.escoficina.controller.exceptions.IllegalOrphanException: This EstoquePecas (br.com.escconsultoria.escoficina.model.entity.EstoquePecas[ codigoEstoquePecas=8 ]) cannot be destroyed since the ModeloEstoquePecas br.com.escconsultoria.escoficina.model.entity.ModeloEstoquePecas[ modeloEstoquePecasPK=br.com.escconsultoria.escoficina.model.entity.ModeloEstoquePecasPK[ codigoEstoquePecas=8, codigoModelo=1 ] ] in its modeloEstoquePecasList field has a non-nullable estoquePecas field.

Exatamente, porque há uma relação entre as 2 entidades, peças contém a chave estrangeira para estoqueDePeças, ou seja, estoquePeças não pode ser deletada enquanto estiver sendo referenciadas pelas peças.

Para resolver isso, no relacionamento utilize na anotação do relacionamento em orphanRemovel = true

//orphanRemovel é para setar que a entidade sem referencia deve ser removida, ou seja, aquelas que tiveram seu pai deletada

//Cascade você escolhe para fazer uma operação automática quando algum crud da sua entidade acontece. Não acredito que precisara usa-lo, veja bem se a sua situação se encaixa no post

obrigado, mas consegui resolver o problema, bom era muito simples, eu estava tentando fazer um for excluindo o ModeloEstoquePecas e estava dando erro na transação, foi corrigido simplesmente chamando o destroy do EstoquePecas passando o ID aonde ele já exclui os filhos e eu me matando sozinho.

private void jButtonEstoquePecasExcluirActionPerformed(java.awt.event.ActionEvent evt) {                                                           
    
    EstoquePecas estoquePecas = new EstoquePecas();
    
    if (jTextFieldIncluirCodigoEstoquePecas.getText().isEmpty() == false) {
        estoquePecas.setCodigoEstoquePecas(Integer.parseInt(jTextFieldIncluirCodigoEstoquePecas.getText()));
    }
    
    EstoquePecasCRUD estoquePecasCRUD = new EstoquePecasCRUD();
    estoquePecasCRUD.setAcaoCRUD("EXCLUIR");
    estoquePecas = estoquePecasCRUD.modeloPadrao(estoquePecas);
    
    if (estoquePecas != null) {
        JOptionPane.showMessageDialog(null, "Estoque De Peças Excluído Com Sucesso.", "Excluir - Estoque De Pecas", 1);
        
        formWindowOpened(null);
        
    } else {
        JOptionPane.showMessageDialog(null, "Estoque De Pecas Não Excluído.", "Excluir - Estoque De Pecas", 0);
    }

}

public Integer destroy(Integer id) {
    
    try {
        
        EntityManager em = getEntityManager();

        EstoquePecasJpaController estoquePecasJpaController = new EstoquePecasJpaController(em.getEntityManagerFactory());
        estoquePecasJpaController.destroy(id);
        
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }
    return id;
}