Como fazer update de um registro que vai ter herança?

Tenho mapeadas duas classes, a classe cliente estende da classe pessoa, em certos momentos vou grava direto cliente, em outros vou gravar pessoa e tem certo momentos que vou ter que pegar um registro pessoa e transforma-la em tipo cliente. Não sei se fui claro, vou gravar uma pessoa na tabela pessoas mas posso depois pegar o id dessa mesma pessoa e gravar informações na tabela cliente referente a essa pessoa.

Já tentei dá update, save, saveOrUpdate e merge em cliente mas nada funciona, em alguns momentos diz que violei a chave, em outros diz que não existe registro do id em cliente e então não pode atualizar, não sei o que fazer para resolver esse problema.
Vou tentar agora apagar o registro em pessoa e depois voltar a gravá-la em cliente.

No final eu preciso fazer um update em Pessoa e um insert em Cliente

Eu tive que excluir da tabela Pessoa e depois fazer inserção na tabela pessoa e cliente por causa da chave estrangeira, de um certo modo deu certo, só não sei se esse modo é o correto pq no final acabou mudando o id do registro.

Não vou colocar como resolvido pq espero ainda que alguém possa me responder.

Olá amigo.

Nunca trabalhei com hibernate, então posso estar falando besteira, mas puramente com java, a princípio só existe 2 jeitos de fazer isso.
Ou vc cria diretamente uma classe cliente, com os campos não utilizados como null (extremamente não recomendado);
ou você cria um método que cria uma classe cliente a partir de uma classe pessoa, copiando os dados comuns (eu faria isso).

espero que ajude.