Por que o Eclipselink está adicionando a coluna discriminadora para a estratégia de herança unida?
-
20-09-2019 - |
Pergunta
Estou usando a estratégia de herança unida com a implementação do Eclipselink JPA. Percebi que o Eclipselink está adicionando a coluna discriminador, nomeada pelo padrão DTYPE, ao esquema do banco de dados. Eu entendo que o discriminador é necessário para uma estratégia de herança de tabela, mas por que para a estratégia ingressada?
O Eclipselink precisa desta coluna porque tenho erros depois de removê -la. Esta coluna é adicionada por razões de desempenho, etc? Não estou particularmente feliz com isso, pois, do ponto de vista do esquema de banco de dados, esta coluna é apenas uma desordem desnecessária.
O JPA baseado em hibernato não faz nada semelhante.
Solução
A partir de Ingeriu a herança da mesa:
Na herança da tabela unida, cada classe compartilha dados da tabela raiz. Além disso, cada subclasse define sua própria tabela que adiciona seu estado estendido. O exemplo a seguir mostra duas tabelas, Project e L_Project, bem como duas classes, Project e LargeProject:
...
A coluna Discriminador é o que determina o tipo e, portanto, o que ingressou na tabela para usar, para que você precise de uma coluna discriminador na tabela pai.