Jsf - xhtml - herança

Pessoal

Gostaria de sugestões sobre como implentar a seguinte situação:

eu tenho as seguintes entidades:

ContratoBasico
ContratoModelo1
ContratoModelo2

sendo que a entidade ContratoBasico não é abstrata (eu posso instancia-la normalmente) e as outras entidades extends (herdam) de ContratoBasico.

e tenho um ContratoManagerBean (cMB) com as seguinte referências:

contratoBasico cB
ContratoModelo1 cM1
ContratoModelo2 cM2

No JSF eu tenho uma página em facelets que eu faço o cadastro do ContratoBasico:

#{cMB.cB.campoBasico1}
#{cMB.cB.campoBasico2}

Após preencher o cadastro do ContratoBasico eu tenho um objeto (cB) preenchido com os dados básicos no meu managerBean.

agora o usuário seleciona o tipo de contrato específico num select one menu

O ContratoModelo1
O ContratoModelo2

Vamos supor que eu escolha o ContratoModelo2.

Aqui começam minhas dúvidas:

Se eu instanciar um ContratoModelo2 (cM2) e fazer uma referência a ele no facelets da seguinte maneira

#{cMB.cM2.campoModelo2} rendered#{cMB.cB.MODELO==2}

eu vou ter o seguinte problema: eu vou ter dois objetos: cB com os dados básicos prenchidos (cB.campoBasico1 e cB.campoBasico2) e cM2 com os dados básicos vazios (cM2.campoBasico1 e cM2.camboBasico2)
porém com os dados específicos preenchidos (cM2.campoModelo2).

Qual a melhor maneira de preencher os dados básicos de cM2. pois eu não posso fazer (pelas regras de herança):

 cM2 = cB;

Se eu fizer:

cM2 = (ContratoModelo2) cB;

eu estarei criando uma nova referência para cM2 e “zerando” os dados específicos que já estão preenchidos de cM2;

e se eu fizer:

cM2.campoBasico1 = cB.campoBasico1;
cM2.campoBasico2 = cB.campoBasico2;

além de ficar repetindo código, eu estarei com um problema pois eu teria que chamar o código acima toda vez que o usuário alterasse algum campo básico na página
e esse controle eu teria que fazer também o cM1.

Alguem poderia sugerir alguma maneira de que eu poderia preencher os dados básico de cM2 com os dados de cB sem perder os dados específicos de cM2 e sem precisar de preencher todos os campos individualmente?