Hibernate - Problema com definição de chave composta
8 respostas
T
thiagofernandes
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?
Olá!
Crie uma classe URL então, que terá o relacionamento de 1 para muitos.
T
thiagofernandes
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
patricia_java
Isso mesmo!!!
Ai no seu javaBean Usuario voce terá um atributo do tipo Url e em um Url um coleção de Usuario.
T
thiagofernandes
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
patricia_java
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
thiagofernandes
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
patricia_java
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
thiagofernandes
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…