O ideal seria criar uma tabela de contatos que vai conter dois usuarios que sao amigos e tb vc poderia adicionar um campo que guarde
o status do contato, que poder ser tipo
Suponha que vc tenha usuario A e usuario B:
Pending (quando um usuario A solicitou amizade um outro usuario B mas o usuario B ainda nao aceitou ser amigo)
Approved ( quando o usuario B aceitou a solicitacao e eh amigo do usuario A.
Porque ai da pra vc da pra saber todos os ‘Friendship requests’ que um determinado usuario tem, ou solicitou.
Daniel (windsofhell), é uma boa, e podemos ir mais além!
Quando um usuário solicita a amizade de alguém, poderíamos criar a tabela de “pedidosRelacionamentos”, onde existe uma coluna com usuário B e outra coluna com usuário A, o que significa que B está pedindo amizade com A.
Com isto poderíamos dividir melhor, e fazer uma seção para o usuário B de “minhas solicitações”, e uma seção para o usuário A de “pedidos de amizade”, fazendo um where ou criteria pelas colunas.
Após A aceitar, iríamos adicionar na tabela “amizades” o registro que A e B são amigos
O problema que fica em minha cabeça é, digamos que queremos listar os amigos do usuário A, mas na tabela “amizades”, existe coluna1: B, coluna2: A. Se dermos um where na coluna1 pegaremos os amigos que o A adicionou, e não os que adicionaram ele. Temos dois jeitos de resolver:
Dar where tanto na coluna1 como na coluna2
Ao um usuário aceitar o outro, criar dois registros na tabela amizades, com: B-A e A-B
Em ambos não vejo como uma boa prática. Pelo Hibernate e com o mapeamento das entidades, deve ter um jeito mais fácil de relacionar essas informações. Alguém pode ajudar com este mapeamento e relação?
Engraçado que no momento não estou desenvolvendo nada, mas deu uma vontade de voltar e fazer uma mini rede social! haha
Bom deixe-me reviver o topico, estou com um problema pareceido do nossa amigo. Mas no meu caso tenho uma tabela de MIDIA e quero fazer um relacionamento MIDIA > MIDIA (1 > N).
O problema é o seguinte quando salvo o relacinamento no banco aparece corretamento quando vou consultar o hibernate duplica a iniformação. Ou seja se na banco a midia tem 1 relacionamento com outra
quando consulto este valor aparece 2 na tela.
Classe Midia.java
@Entity
public class Midia extends Model {
@OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "relatedMidia_fk")
private List<RelatedMidia> referencias = new ArrayList<RelatedMidia>();
}