Pessoal, estou com problemas para gravar no hibernate um relacionamento de n-n ! Ja estou quebrando a cabeça alguns dias. Alguem teve o mesmo problema e poderia me ajudar ? desde já muito obrigado.
eu tenho as seguintes tabelas:
users; role; users_x_role.
e os seguintes mapeamentos no hibernate
Users; Role
Consigo fazer as consultas normalmente, verificar quais regras o usuario possui e etc, porem na hora de gravar uma nova regra para o usario nao esta dando certo, eu tentei o seguinte codigo:
@HibernateTransaction
public class UserBO {
@HibernateTransaction
public Users makeUsersPersistent(Users user, Set<Role> roles){
DAOFactory factory = DAOFactory.getDAOFactory(DAOFactory.HIBERNATE);
UsersDAO usersDAO = factory.getUsersDAO();
RoleDAO roleDAO = factory.getRoleDAO();
user.setRoles(roles);
return usersDAO.makePersistent(user);
}
}
A implementação do DAO segue o tutorial do hibernate:
http://www.hibernate.org/328.html
E o controle de transação segue o tutorial do GUJ
http://www.guj.com.br/java.tutorial.artigo.182.1.guj
O codigo nao lança nenhuma exception mas tb nao grava nada no banco de dados.
Abaixo segue implementação do DAO referente a tornar o objeto persistido no banco de dados
public T makePersistent(T entity) {
getSession().saveOrUpdate(entity);
return entity;
}
Abaixo segue como fiz para recuperar do JSP as regras selecionadas, usando myFaces
//usersList é um componentes do myFaces. (ListDataModel) usado para montar a grid no JSP
public void makeUsersPersistent(){
UserBO usersBO = new UserBO();
List<Users> users = (List<Users>)usersList.getWrappedData();
List<Role> roles = (List<Role>)roleList.getWrappedData();
Set<Role> rolesSelected = new HashSet<Role>(0);
for(Role role : roles)
if(role.isMarked())
rolesSelected.add(role);
for(Users user : users)
if(user.isMarked())
usersBO.makeUsersPersistent(user, rolesSelected);
}