duvida auto relacionamento hibernate

Java

04/05/2012

Eu tenho uma dúvida e gostaria que alguém pudesse esclarecer. Tenho uma tabela de empresa e tem um atributo onde é definida se ela é contratante ou contratada. Até o momento não tinha problema pois uma contratada podia estar relacionada a apenas a uma contratante, mas agora mudou o programa ou seja uma contratada pode estar relacionada a várias contratantes como uma contratante pode estar a várias contratadas. O problema não é em relação a cardinalidade e como irei montar com o hiber o problema esta nas Classe Empresa, pois não sei se extendo Contratante de empresa pois tanto a empresa contratante como a contrata possui os mesmo campos o que muda é somente um campo chamado contrata se for 1 e contratada e se for 2 é contratante,eu já fiz algo assim com pessoa física e jurídica, mas eu tinha as campos cpf e cnpj que diferem neste caso eu tenho somente o campo contrata. E prendo gerar um nova tabela com as chaves da contratada e contratante.
Jose Boas

Jose Boas

Curtidas 0

Respostas

Davi Costa

Davi Costa

04/05/2012

Vc pode criar uma coluna que controla se a empresa é contratada ou contratante.
E pode criar uma tabela para ligar as várias contratante que ela possa ter.

att Davi
GOSTEI 0
Jose Boas

Jose Boas

04/05/2012

Então eu não preciso extender e dentro da classe ficaria assim Empresa ficaria assim o mapeamento ?
@ManyToMany(fetch=FetchType.EAGER)
@JoinTable(name=empresa_contratante,joinColumns={@JoinColumn(name=id_empresa)},
inverseJoinColumns={@JoinColumn(name=id_contratante)})
@Fetch(FetchMode.SUBSELECT)
private Collection<Empresa> contratanteList;
GOSTEI 0
Davi Costa

Davi Costa

04/05/2012

Pode ser uma solução sim.

att Davi
GOSTEI 0
Jose Boas

Jose Boas

04/05/2012

Você teria uma melhor solução ? POr favor caso tenha, estou aqui para aprender .
GOSTEI 0
Davi Costa

Davi Costa

04/05/2012

Para ser bem honesto usaria essa sim.

att Davi
GOSTEI 0
Jose Boas

Jose Boas

04/05/2012

Muito Obrigado pela ajuda.
GOSTEI 0
Lucas Abatepaulo

Lucas Abatepaulo

04/05/2012

Só como dica, ao invés de utilizar 1 para contratada e 2 para contratante, crie um ENUM, o seu código ficara mais limpo.
GOSTEI 0
POSTAR