Utilizando Cascate

Bom dia, pessoal alguém já passou por esse problema?

tenho uma classe chamada cliente dentro dela tem um atributo chamado pessoafisica a qual herda a classe pessoa.

Quando utilizo o mapeamente cascate.all ele inserir, alterar e exclui, porém se tiver um funcionário com mesmo CPF o registro é excluído também.

utilizando o mapeamento cascade = { CascadeType.MERGE, CascadeType.PERSIST,
CascadeType.REFRESH }. nesse caso cadastra normalmente, porém se o cpf já existir na tabela pessoa da o seguinte erro: org.hibernate.PersistentObjectException: detached entity passed to persist: br.com.jtsistemas.nfe.modelo.PessoaFisica

Alguém sabe como faço para incluir, alterar e excluir somente na classe cliente sem a exclusão afetar as outras classes?