codUsuario (int PK)
codIdentificacao (int PK)
nome
Item
codItem (int PK)
descricao
E agora uma tabela associativa. Nessa tabela eu gostaria de ter o codUsuario e codItem. Observe que a tabela usuário tem 2 PK, e eu quero apenas a primeira PK na associativa.
ItemUsuario
codUsuario (FK)
codItem (FK)
data
Como eu faria esse mapeamento com hibernate annotations? Colocando apenas 1 PK da tabela usuário e a outra PK da tabela item na associativa.
Sei disso cara!
Já vi essa página. Porém não conseguiu esclarecer minha dúvida! Sei fazer vários tipos de mapeamento no hibernate, porém nesse caso explícito acima é que surgiu a dúvida!
Se eu quiser fazer o mapeamento acima com as 2 PK da tabela usuário como FK eu consigo! Quero fazer com apenas 1 PK como FK.
Já uso hibernate annotations.Apenas surgiu essa dúvida em uma necessidade agora…
Posso estar falando besteira, até porque não conheço a sua regra, mas não ficaria estranho você estar referenciando apenas uma das PKs de uma determinada tabela?
Isso deixaria de garantir a unicidade da informação. Se você “casa” as informações com a metade de uma primary key, você não vai garantir o retorno de uma determinada informação.
Como disse, posso estar falando besteira, mas logicamente isso pode vir a te trazer problemas.
Entendo seu ponto de vista e até concordo com você. O problema é que me foi passado um banco de dados legado e ele está mapeado dessa forma!
Se eu pudesse gerá-lo do próprio hibernate seria ótimo! Mas já é um banco pronto! E ele esta modelado assim…
Já procurei em vários sites, no fórum do hibernate, livros e não encontrei nada que me pudesse ajudar…
Acho que se você tentar fazer isso que deseja, pelo Hibernate, não vai funcionar da maneira que você quer.
Ele tentará linkar as PKs e não encontrará uma consistência dessas informações.
Sendo assim, ele poderá retornar valores que não deseja, ou até mesmo alegar erro.
Não sei exatamente como seria o comportamento dele, pois nunca fiz nada parecido.