Hibernate e JPA por que?

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).