Teve uma coisa do teu código que eu “não gostei”, não cheguei a ver se há outras formas de resolver, estou me limitando ao que vi neste tópico:
Vou ater-me a este trecho de código.
Quando você escreve Usuario.idUsuario significa que a classe foi escrita assim?
public class Usuario {
public int idUsuario;
//... resto da classe omitido propositalmente
}
Hmm… dei uma olhada no teu exemplo, e acho que entendi o que você fez. Só achei que tudo ficou um pouco espalhado demais. Para sistemas pequenos é tranquilo e até para sistemas médios pode ser controlável, mas a medida que um sistema cresce, pode-se criar uma dificuldade bem indesejável.
No construtor das classes que herdam de Alias, tentaria fazer algo com reflection para evitar o mapeamento que seria obrigado a fazer ali (ou melhor, transferiria essa responsabilidade para o construtor do Alias).