Extender classe model no SpringBoot onde os dois tem @Id
Então galera, a dúvida é exatamente essa que está no título:
Tenho duas classes Models, e queria extender uma a outra, para não ter que repetir os atributos.
@Id
private UUID rollNumber;
@Nullable
private double weigth;
@Nullable
private String treatment;
@Nullable
private double costPrice;
@Id
private String articleCode;
@Nullable
private String articleName;
@Nullable
private String colorCode;
@Nullable
private String colorName;
@Nullable
private String composition;
@Nullable
private String quality;
@Nullable
private String manufacturer;
@Nullable
private double width;
Fazendo isso dar erro na hora de executar a aplicação.
Identifiquei que era por conta do ID, a classe ProductModel ficaria com 2.
Alguém poderia me ajudar com a forma correta de fazer? Imagino que é uma besteira, mas sou iniciante.
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