Hibernate - gravando os relacionamentos

0 respostas
R

Ola.

Estou tendo problemas no hibernate pois nao consigo gravar os relacionamentos entre as tabelas.
Eu tenho 3 tabelas: users, role, users_x_role
Duas classes: Users, Role

E segue abaixo como ficou o relacionamento nas classes, feito pelo proprio hibernate tools

public class Users implements Serializable {
   ....
   private Set<Role> roles = new HashSet<Role>(0);

   public void setRoles(Set<Role> roles) {
         this.roles = roles;
   }
   //Esse eu mesmo criei
   public void setRoles(List<Role> roles) {
         this.roles = new HashSet<Role>(0);
         this.roles.addAll(roles);
   }
   ....
}

public class Role implements Serializable {
   ....
   private Set<Users> userses = new HashSet<Users>(0);
   //idem ao de cima
   ...
}

O que nao entendo é como fazer para gravar um usuario com determinadas regras… e vice-versa
o codigo abaixo é um exemplo do que ja tentei fazer, porem nao obtive sucesso. Desde ja muito obrigado

PersonBO personBO = new PersonBO();

//Coleta as listas da sessao
List users = (List)usersList.getWrappedData();
List roles = (List)roleList.getWrappedData();

//Cria as listas os quais o usuario selecionou
List<Users> usersSelected = new LinkedList<Users>();
List<Role> rolesSelected = new LinkedList<Role>();

//Coleta somente os usuarios selecionados
for(int index = 0; index < users.size(); index++){
	Users userSelected = (Users)users.get(index);
	if(userSelected.isMarked())
		usersSelected.add(userSelected);
}

//Coleta somente as regras selecionadas
for(int index = 0; index < rolesSelected.size(); index++){
	Role roleSelected = (Role)roles.get(index);
	if(roleSelected.isMarked())
		rolesSelected.add(roleSelected);
}

for(int index = 0; index < usersSelected.size(); index++)
	usersSelected.get(index).setRoles(rolesSelected);

for(int index = 0; index < rolesSelected.size(); index++)
	rolesSelected.get(index).setUserses(usersSelected);

for(int index = 0; index < usersSelected.size(); index++)
	personBO.makeUsersPersistent(usersSelected.get(index));
Criado 26 de outubro de 2006
Respostas 0
Participantes 1