Fórum Validação de relacionamentos (listas) JSF/JPA #499030

24/10/2014

0

Boa tarde a todos.

Estou desenvolvendo uma aplicação com a seguinte estrutura:

Entidades > Repositórios > Servicos > Beans(CDI) > Páginas(JSF+PrimeFaces)
, onde ocorrem alguns relacionamentos como por exemplo

Um Usuário possui relacionamento ManyToMany com Grupo. Agora percebi que a aplicação esta permitindo que ocorra duplicidade no relacionamento.

Exemplo

Temos os seguintes atributos:
* Usuário João - Grupo Engenheiros

O João faz parte do grupo Engenheiros, porém minha aplicação esta permitindo que ele seja adicionado mais de uma vez no mesmo grupo, gerando assim duplicidade neste relacionamento.

Na opinião de vocês qual caminho deve ser tomado para que haja menos alterações possíveis?
Criar alguma validação no serviço, fazer alguma alteração no método set ou alguma outra solução?

Obrigado.
Bruno Santana

Bruno Santana

Responder

Posts

28/10/2014

Ronaldo Lanhellas

Boa tarde a todos.

Estou desenvolvendo uma aplicação com a seguinte estrutura:

Entidades > Repositórios > Servicos > Beans(CDI) > Páginas(JSF+PrimeFaces)
, onde ocorrem alguns relacionamentos como por exemplo

Um Usuário possui relacionamento ManyToMany com Grupo. Agora percebi que a aplicação esta permitindo que ocorra duplicidade no relacionamento.

Exemplo

Temos os seguintes atributos:
* Usuário João - Grupo Engenheiros

O João faz parte do grupo Engenheiros, porém minha aplicação esta permitindo que ele seja adicionado mais de uma vez no mesmo grupo, gerando assim duplicidade neste relacionamento.

Na opinião de vocês qual caminho deve ser tomado para que haja menos alterações possíveis?
Criar alguma validação no serviço, fazer alguma alteração no método set ou alguma outra solução?

Obrigado.


Se Usuario e Grupo são ManyToMany, com certeza há uma 3 tabela no banco que faz a ligação dessas 2 tabelas, algo como: usuario_grupo. Sendo assim você pode colocar uma chave única nessa tabela usando as chaves estrangeiras de id_usuario e id_grupo. Mais ou menos assim:

CREATE TABLE usuario_grupo(
  id serial integer primary key,
  id_usuario chave estrangeira para USUARIO,
  id_grupo chave estrangeira para GRUPO,
  CRIA UMA CHAVE UNICA PARA (id_usuario, id_grupo)
);
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar