Hibernate "mixing inheritance strategies"

6 respostas
facholi

Pessoal, já estou entrando no segundo dia com este problema e gostaria de uma ajuda…

Tenho um modelo de dados qual devo seguir:

ClasseA ( estratégia JOINED )
ClasseB extende ClasseA
ClasseC extende ClasseA

Até aqui tudo bem, devo ter uma tabela ClasseA e outras duas tabelas relacionadas.
O problema é quando tento criar herança com a ClasseC usando estratégia SINGLE_TABLE:

ClasseC extende ClasseA ( estratégia SINGLE_TABLE, discriminatorColumn TYPE )
ClasseD extende ClasseC ( discriminatorValue ‘ClasseD’ )
ClasseE extende ClasseC ( discriminatorValue ‘ClasseE’ )

Com isso quero que exista simplesmente uma tabela ClasseC, com campos de ClasseD e ClasseE.
Mas mesmo especificando a estratégia como SINGLE_TABLE, o hibernate gera as duas tabelas ( ClasseD e ClasseE ).

ajuda?

@Entity
@Inheritance(strategy = InheritanceType.JOINED)
public abstract class ClasseA { ... }


@Entity
public class ClasseB extends ClasseA { ... } // Tabela ClasseB gerada. Ok!

@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "tipo")
public abstract class ClasseC extends ClasseA { ... } // Tabela ClasseC gerada. Mas não tem os campos de ClasseD e ClasseE.

@Entity
@DiscriminatorValue("ClasseD")
public class ClasseD extends ClasseC { ... } // Tabela ClasseD gerada. (não era o q queria)


@Entity
@DiscriminatorValue("ClasseE")
public class ClasseE extends ClasseC { ... } // Tabela ClasseD gerada. (não era o q queria)

6 Respostas

Paulo_Silveira

deveria estar funcionando

facholi, minha dica: nao use JOINED… em especial se for ter queries buscando por objetos do tipo A

facholi

acho q não entendi bem paulo… qual o problema com JOINED?

eu escolhi usar pq o modelo de dados está desenhado assim… qual alternativa devo buscar?

A

Exatamente o que eu preciso

Alguem, encontrou uma solução para isso?

Minha situação é exatamente semelhante ao do nosso colega

J

É um tópico antigo, mas estou exatamente com esse problema. facholi ou Alexandre Ferreira, vcs conseguiram resolver o problema?

Alguma outra pessoa tem alguma idéia?

Agradeço quem puder ajudar…

L

Tirando a poeira e deixando subir o cheiro de naftalina…

Sou mais um na mesma situação.
Alguém conseguiu resolver o problema? Tenho exatamente a mesma situação e não achei uma solução.

Att.

drcosta

Também estou na mesma situação. Alguém conseguiu resolver?

Abs,

Daniel

Criado 28 de março de 2008
Ultima resposta 9 de nov. de 2011
Respostas 6
Participantes 6