@OneToMany e @ManyToMany ... em tabelas dinamicas... como fazer ? (Hibernate)

Eu tenho a seguinte relaçao no meu banco

TelefoneDono | 1 - N | Telefone

porem eu tenho varios tabelas de telefone dono… por exemplo

Loja (e um tipo de TelefoneDono) … LojaTelefone(e um tipo de Telefone)
Funcionario (e um tipo de TelefoneDono) … FuncionarioTelefone (e um tipo de Telefone) …

Ai eu tenho 1 tabela que mapea todos os TelefoneDono
TipoDeDono | 1 - N | TelefoneDono

nesta tabela eu tenho…
cod = 1, descricao = “Loja”, className = “br.com.model.loja.Loja”, tabela=“grpLoja”
cod = 2, descricao = “Funcionario”, className = “br.com.model.funcionario.Funcionario”, tabela=“grpFuncionario”

gostaria de ter algo como…
TipoDeDono.getDonos() que e @OneToMany (1 tipo de dono tem varios donos)
TipoDeDono.getTelefones() que e @ManyToMany (axo eu… na verdade… um TipoDono tem varios Donos que por sua vez tem varios Telefones)

Nao estou conseguindo mapear essa tabela pra conseguir axar os donos… alguem sabe como fazer isso ??

Cara, ao inves de postar um codigo optei por anexar um entity bean de um modelo que criei para estudo. Modelei uma locadora com algumas tabelas e uma delas é CLIENTE_TITULAR (referente ao entity que anexei) e nela tenho as relacoes: um cliente titular tem uma categoria (relacionamento muitos para um); um cliente titular aluga varios titulos (relacionamento um para muitos) e um cliente titular possui muitos clientes dependentes (relacionamento um para muitos). Espero ter ajudado!

Dica: alguns IDE´s geram os entity beans de acordo com suas tabelas, por exemplo, NetBeans

Abracao

[quote=Vini Fernandes] Cara, ao inves de postar um codigo optei por anexar um entity bean de um modelo que criei para estudo. Modelei uma locadora com algumas tabelas e uma delas é CLIENTE_TITULAR (referente ao entity que anexei) e nela tenho as relacoes: um cliente titular tem uma categoria (relacionamento muitos para um); um cliente titular aluga varios titulos (relacionamento um para muitos) e um cliente titular possui muitos clientes dependentes (relacionamento um para muitos). Espero ter ajudado!

Dica: alguns IDE´s geram os entity beans de acordo com suas tabelas, por exemplo, NetBeans

Abracao[/quote]

o meu problema especifico e que a tabela e dinamica… ou seja…

eu tenho 1 tabela com Lojas … que referencia uma tabela com os telefones das lojas…
ai eu tenho 1 tabela com Funcionarios… que referencia a sua propeira tabela com telefone dos funcionarios…

e assim por diante… meu problema e esse… como mapear… se as tabelas sao diferentes…

eu tenho 1 lista com todos os tipos de donos… ou seja… as classes referentes…

Cara, nao entendi muito bem seu problemas, já que nao sei como sao os relacionamentos entre loja, telefone e funcionario, por exemplo: uma loja tem muitos telefones ou um telefone, etc. Assim como o seu problema, meu modelo tambem tem tabelas diferentes: CLIENTE_TITULAR, CLIENTE_DEPENDENTE, TITULO, CATEGORIA_CLIENTE, PROMOCAO, etc.

Caso voce queira eu posso te mandar meu script para voce tentar entender como estao relacionadas!

Ate

no meu esta assim

eu tenho 1 classe abstrata … MapedBySuperclass que e um telefone… esta classe eu implemento para cada tabela…

eu tenho por exemplo… 4 tabelas de telefone… 1 para os telefones de fornecedores… 1 para os telefones de funcionario… etc etc…

o mecanismo os metodos e etc… da classe telefone e o mesmo, para os 4 tipos de telefone… e todos vem da mesma classe abstrata…

a minha duvida e como reunir todos os telefone…

o problema de colocar todos os telefones em 1 unica tabela e o de como fazer o FK que e diferente para cada tipo de dono de telefone… esse e o meu problema

EDIT
Falando em termo de tabela… e + ou - assim
grpLoja - tabela de lojas
grpLoja_Telefone - telefone para as lojas, incluindo matriz e filiais
grpFornecedores - tabela de fornecedors
grpFornecedores_Telefone - tabela contendo a lista de telefone dos fornecedores

e assim vai…

a tabela grpLoja_Telefone e grpFornecedores_Telefone … tem exatamente os mesmo campos, exceto o FK do dono do telefone, que referencia tabelas destintas em cada 1… onde a relaçao e de 1 telefone pode ter um unico dono… um unico dono pode ter varios telefones

Cara, desconfio que voce esta complicando a modelagem de dominio! Eu nao adotaria uma tabela TELEFONE (muito menos varias tabelas TELEFONE…rsrs), mas sim adicionaria um campo telefone para as tabelas FUNCIONARIO, LOJA, ETC, pois uma tabela de telefones nao tem sentido existir sem as outras. Teria sentido se voce estivesse modelando uma lista de telefones, onde a informacao fundamental (o que dá sentido a existencia da tabela) é uma tabela de telefones. Imagine o seguinte: a classe Funcionario tem um atributo nome, telefone, documento (bem como seu metodos get e set), a classe Loja tem seu endereco, telefone, cnpj, etc. Seguinte essa raciocinio eu nao vejo ganho em uma classe Telefone! O que ela representa em seu modelo? Quais sao seus atributos, metodos, etc?
Mas se ainda assim voce quer essa tabela o que voce pode fazer é criar apenas UMA tabela TELEFONE, e referencia´la em outras tabelas, por exemplo: inserindo uma FK na tabela FUNCIONARIO, LOJA, etc.

Abracao

Não da pra ter 1 campo em uma tabela… pois 1 funcionario pode ter varios telefones… assim como uma empresa… etc etc… todo mundo pode ter varios telefones… alem disso… na empresa eu preciso setar algumas coisas como… telefone 24h… telefone fax … telefone loja… e nao faz sentido registrar duas vezes ou 3 vezes o mesmo numero… pois o telefone 24h e o telefone loja saum o mesmo por exemplo…

Entao o negocio é voce criar uma join table, imagine as tabelas: TELEFONE, FUNCIONARIO E TELEFONE_FUNCIONARIO, onde esta ultima tera como campos apenas duas FK, uma referenciando a tabela funcionario e outro referenciando a tabela telefone. Dessa forma voce tera um relacionamento n:n (muitos para muitos) entre telefone e funcionario, pois um funcionario tera muitos tel. e um telefone tera muitos funcionarios. O que acho que ficara complicado é se voce fizer o mesmo para LOJA, etc. Mas o que eu continuo defendendo é a adocao de apenas uma tabela para telefones, caso contrario as coisas podem ficar confusas!

ate

é ja mudei a estrutura…

1 tabela de telefone… 1 JoinTable para cada proprietario…