Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Utilizando InheritanceType.JOINED com FlyWay

Olá turma, estou com uma dificuldade sobre classes generalizadas, por exemplo, tenho uma entidade "obra" e a mesma possui os tipos de "publica" e "privada". Focando primeiramente nas publicas, como ficaria a inserçao de dados na tabela, estou com dúvidas sobre como ficaria o repository e também as anotações Inheritance, podem me ajudar ?

Tabela obra e obra_publica: Insira aqui a descrição dessa imagem para ajudar na acessibilidadeClasse Entity obra e obra_publica: Insira aqui a descrição dessa imagem para ajudar na acessibilidadeClasse Controller obra_publica: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Classe Record (DTO chegando os dados do frontend): Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Modelo conceitual DER: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas
solução!

Olá Rodrigo, tudo bem?

A estratégia InheritanceType.JOINED cria uma tabela para cada classe na hierarquia de herança. No seu caso, teríamos uma tabela para "Obra" e outra para "ObraPublica".

Para usar essa estratégia, você deve adicionar a anotação @Inheritance(strategy = InheritanceType.JOINED) na classe pai, que no seu caso seria a "Obra".

Agora, sobre a inserção dos dados, você deve tratar "ObraPublica" como qualquer outra entidade. Isso significa que você deve criar um repositório para "ObraPublica" e usar os métodos padrão do Spring Data JPA para inserir, atualizar, deletar e buscar registros.

Aqui está um exemplo de como poderia ser o repositório:

public interface ObraPublicaRepository extends JpaRepository<ObraPublica, Long> {
}

E aqui está um exemplo de como você poderia inserir uma nova "ObraPublica":

@Autowired
private ObraPublicaRepository obraPublicaRepository;

public void inserirObraPublica() {
    ObraPublica obraPublica = new ObraPublica();
    // preencher os atributos de obraPublica
    obraPublicaRepository.save(obraPublica);
}

Lembre-se que você deve preencher todos os atributos herdados de "Obra" além dos atributos específicos de "ObraPublica".

Espero ter ajudado e bons estudos!

Otavio deu super certo aqui, valeu !!