Olá Pessoal,
Hoje tenho a seguinte hierarquia de classes:
Classe
/ \
Classe1 Classe2
\
Classe3
Classe (abstrata)
Classe1 e Classe2 extendem de Classe (não abstratas)
Classe3 extende de Classe2 (não abstrata)
Para mapear essas classes usei a estratégia JOINED em “Classe”:
@Inheritance(strategy = InheritanceType.JOINED)
Até agora estava funcionando bem para as regras do sistema. Mas surgiu uma nova necessidade, em que o objeto pode ser alterado de Classe2 para Classe3 ou vice-versa.
Não sei se há a possibilidade de tratar isso no mapeamento. Na hora de gravar o objeto que está mudando de classe, o banco reclama. Como não sou muito experiente com JPA, me surgiu esse problema.
Uma possível solução seria a de ter três tabelas:
- Uma para Classe
- Uma para Classe2 e Classe3 que contenham todos os atributos de Classe2 e Classe3 (semelhante a estratégia SINGLE_TABLE, mas só para juntar Classe2 e Classe3)
- Uma para Classe1
Mas eu não consegui fazer isso. É possível? Ou será q existe algum outro artifício mantendo a estratégia JOINED e fazendo algum tratamento na hora de gravar o objeto?
Agradeço a ajuda de vocês…
Valeu!
