Galera, meu primeiro post aqui… comecei a estudar Hibernate e estou tendo dificuldades em fazer um certo relacionamento
Tenho uma tabela Usuario que tem os atributos:
id
nome
email
senha
endereco
nascimento
dataCadastro
… até ai tudo bem. Só que é o seguinte, eu quero que um usuario tenha uma lista de amigos (que tambem é do tipo Usuario)
é um relacionamento 1-n não é isso ?
Alguem pode me dar uma dica de como fazer isso ?
eu tentei desse jeito:
@OneToMany(fetch=FetchType.LAZY)
@JoinTable(name=“Amizade”, joinColumns=@JoinColumn(name=“id_usuario”), inverseJoinColumns=@JoinColumn(name=“id_amigo”))
@Cascade(CascadeType.ALL)
private Collection amigos;
isso gera uma tabela “Amizade” com os campos id_usuario e id_amigo(chave primaria)
Se eu rodar o seguinte programa ele insere certo.
Usuario user = (Usuario)HibernateUtil.getSession().get(Usuario.class, 1L);
Usuario user2 = (Usuario)HibernateUtil.getSession().get(Usuario.class, 2L);
Usuario user3 = (Usuario)HibernateUtil.getSession().get(Usuario.class, 3L);
Usuario user4 = (Usuario)HibernateUtil.getSession().get(Usuario.class, 4L);
Usuario user5 = (Usuario)HibernateUtil.getSession().get(Usuario.class, 5L);
user.getAmigos().add(user2);
user.getAmigos().add(user3);
user.getAmigos().add(user4);
user.getAmigos().add(user5);
HibernateUtil.getSession().update(user);
Minha duvida é … O meu relacionamento la de List amigos está correto ?
Se eu rodar o programa acima, ele adiciona na tabela amizade todos os amigos inseridos na lista.
Desse jeito se eu recuperar o user2 … na lista de amigos dele nao terá o user (o primeiro)
E se eu fizer:
user.getAmigos().add(user2);
user2.getAmigos().add(user);
user.getAmigos().add(user3);
user3.getAmigos().add(user);
e salvar o user… diz que o campo nao pode ser duplicado
Duplicate entry ‘1’ for key ‘id_amigo’
Alguem pode me orientar ?
Valeu, agradeço desde já.