Opa @tadeujrp,
Existem vários tipos de herança em JPA. Pela descrição, eu acho que você quer utilizar a MappedSuperclass. Aqui fica um exemplo que fiz:
@MappedSuperclass
public class Veiculo {
@Id
@GeneratedValue
private Integer id;
private String nome;
}
@Entity
public class Caminhao extends Veiculo {
private String cargaUtil;
}
@Entity
public class Onibus extends Veiculo {
private Integer numeroDeAcentos;
}
@SpringBootTest
public class Heranca {
@Autowired
private VeiculoRepository veiculoRepository;
@Test
void test() {
var c = new Caminhao();
c.setNome("C-1731R");
c.setCargaUtil("10.356 Kg");
veiculoRepository.save(c);
var o = new Onibus();
o.setNome("Apache VIP");
o.setNumeroDeAcentos(42);
veiculoRepository.save(o);
}
}
Contudo, existem outras formas. Veja este post para uma descrição mais ampla: https://www.baeldung.com/hibernate-inheritance
Eu também estou gravando vídeos sobre JPA, pretendo falar sobre herança mais para frente. Caso tenha interesse em acompanhar https://www.youtube.com/@dev-br
Obrigado pela resposta amigo. Por algum motivo o post escondeu a declaração da classe, seria a primeira:
@Entity @Table(name = "TB_PRODUCTS_IN_STOCK") public class ProductModel extends ArticleModel {
e a segunda:
@Entity @Table(name = "TB_ARTICLE_MODEL") public class ArticleModel {
A questão não é a extensão da classe em si, é como faria pra extender a classe sendo que as duas possuem chave primária. Na hora de executar ele dá um conflito. A dúvida seria: Consigo, no momento que eu extendo a classe, trazer o atributo em forma de chave estrangeira ao invés de também chave primária? Se sim, poderia me ensinar como fazer ou me apontar o caminho?
Com certeza vou assistir esses vídeos, tenho muito interesse em entender JPA.