Hibernate - Problema com definição de chave composta

8 respostas
T

E ae galera…

Eu to com um problema faz uma semana já, revirei a internet atrás e não teve jeito tive que vim aqui encomodar…

Bom vamos ao problema…

Eu tenho essas duas tabelas:

Usuarios

  • usuario_id
    nome
    login
    senha
    email

Feeds

  • feed_id
  • usuario_id
    url
    descricao

Eu preciso que na tabela Feeds eu não possa ter a mesma URL pro mesmo usuário. Eu sei que se retirasse o id e fizesse uma chave composta com a URL e Usuário resolvia, mas durante a minha busca eu vi sobre surrogate keys(chave substituta) e achei o mais correto usá-la, ai o certo acho que seria ter a chave composta com o usuario_id e feed_id mais ai eu entro no problema de não ter a url igual por usuário.

Alguém tem alguma sugestão de como eu posso fazer isso?

Abraço e obrigado desde já.

8 Respostas

P

Olá!
Crie uma classe URL então, que terá o relacionamento de 1 para muitos.

T

Olá,
Mais ou menos assim

Usuarios

  • usuario_id
    nome
    login
    senha
    email

Urls
*url_id
url
descricao

Feeds
*feed_id
*usuario_id
*url_id

P

Isso mesmo!!!

Ai no seu javaBean Usuario voce terá um atributo do tipo Url e em um Url um coleção de Usuario.

T

Blz desse jeito funcionou, mas não tem outro jeito? porque ai eu teria que criar sempre uma outra classe que guardaria as chaves das duas tabelas…

P

Voce vai criar a classe URL e fazer o relacionamento com a classe Usuario, em um usuario vai ficar a chave estrangeira que vai fazer referencia para chave primaria da URL. Entendeu?

T

Me desculpe mais eu não estou conseguindo visualizar como que as tabelas ficariam, eu gostaria que não precisasse criar essa classe URL eu queria que só tivesse usuario e feed, tem como?

P

Depende da sua regra de negocio.
Se um usuario só pode ter uma url ou só pode ter uma url cadastrada no sistema ai voce coloca esse campo url como unique ou faça uma consulta antes.
Mas se voce quer que um usuario tenha apenas uma URL e o outro a mesma ai eu aconselho a criar uma outra tabela.

T

Sim esse jeito que tu me mostrou funcionou perfeitamente muito obrigado mesmo, só vai ter esse inconveniente, mas pelo jeito é a única solução. É que eu preferiria adaptar banco com as minhas classes não o contrário…

Mais muito obrigado mesmo me ajudou muito…

Criado 18 de novembro de 2011
Ultima resposta 18 de nov. de 2011
Respostas 8
Participantes 2