@MappedSuperclass ou @Inheritance

Quando você usa a anotação @MappedSuperclass, quando gerar as tabelas ela não será gerada e sim as classes filhas dela exemplo:

@MappedSuperclass 
abstract class  Animal {}

@Entity
class Cao extends Animal {}

@Entity
class Gato extends Animal {}

@Entity
class Leao extends Animal {}

No banco as tabelas que vão ser criadas serão Cao, Gato e Leao. Caso você queira a a tabela de Animal sejá gerada então será preciso mudar a anotação para @Inheritance, que no caso tem três possíveis estratégias de mapeamento – INGLE TABLE, TABLE PER CLASS ou JOINED. Ficaria assim:

@Entity
@Inheritance(strategy = InheritanceType.JOINED) 
abstract class  Animal {}

@Entity
class Cao extends Animal {}

@Entity
class Gato extends Animal {}

@Entity
class Leao extends Animal {}

Share and Enjoy !

0Shares
0 0