Tenho tido um pouco de dificuldade para criar um projeto em Java, pois existe a necessidade de implementar herança nas minhas tabelas como por exemplo, estou criando um sistema para administração de condomínio, existe a tabela Condomino, Sindico, Morador e Proprietario.
O Sindico, Morador e Proprietario são um tipo de Condomino, porque eu sei que se tivesse que colocar os mesmos atributos que estão em Condomino e colocasse em Sindico, Morador e Proprietario ficaria redundante, é por isso que coloquei Condomino como Super-Class e as classes Sindico, Morador e Proprietario como Sub-Classe, ou seja, Condomino irá ser abstrata e as outras classes abaixo iram herdar os atributos da classe Condomino.
Sei abstrair tudo isso muito bem em UML, e também sei fazer isso em Java, em todas as classes coloquei as anotações do JPA como por exemplo do @NotBlank, e somente coloquei a anotação @Id, @GeneratedValue nas Sub-Classes porque a classe Condomino é uma classe abstrata.
A outra coisa que fiz foi somente colocar @Entity nas Sub-Classes pelo mesmo motivo da classe Condomino ser uma classe abstrata.
Pelo que fui informado de outros forúns de Java, normalmente nestes casos é utilizamos Agregação e não Herança. As implementações do JPA como o Hibernate não lidam muito bem com Herança. Na prática, ficaria algo assim:
public class Condomino {
// atributos omitidos
}
public class Sindico {
// atributos omitidos
@ManyToOne
@JoinColumn(name = "condomino_id")
private Condomino condomino;
}
Eu gostaria de saber se realmente o JPA não sabe lidar com Herança e se eu fosse implementar herança no JPA que tipos de problemas eu poderia encontrar na frente?
