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!