Boa noite pessoal,
Estou com um problema tenho o seguinte cenário. 3 tabelas, sendo : Usuario, Role, e Perfil(id_role,id_usuaro).
Sendo que tenho apenas duas Class entidade mapeadas pelo hibernate. Usuario e Role, quando vou cadastrar o usuario escolho as roles e automaticamente o hibernate ja insere na tabela Perfil (claro), minha duvida he: Nao estou conseguido alterar as permissões do usuario. pois nao tenho como trabalhar direto com a classe permissao pois nao esta mapeada como classe entidade. vou mostrar como estão minhas classas.
classe Usuario
[code]@Entity
@Table(name = “usuario”)
@javax.persistence.SequenceGenerator(name = “usuario_id_usuario_seq”, sequenceName = “usuario_id_usuario_seq”)
public class Usuario implements Serializable, UserDetails {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy= GenerationType.AUTO, generator="usuario_id_usuario_seq")
@Basic(optional = false)
@Column(name = "id_usuario")
private Integer idUsuario;
@Column(name = "matricula")
private String matricula;
@Basic(optional = false)
@Column(name = "username")
private String username;
@Column(name = "password")
private String password;
@Column(name = "status")
private Boolean status;
@Column(name = "tipo_usuario")
private String tipoUsuario;
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "permissao", joinColumns =
@JoinColumn(name = "id_usuario"), inverseJoinColumns =
@JoinColumn(name = "id_role"))
private List<Role> perfis = new ArrayList<Role>();
//getter e setter…
@Override
public Collection getAuthorities() {
List lista = new ArrayList();
for(Role role : getPerfis()) {
lista.add(new GrantedAuthorityImpl(role.getAuthority()));
}
return lista;
}
[/code]
Classe Role
[code]@Entity
@Table(name = “role”)
public class Role implements Serializable, GrantedAuthority {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Basic(optional = false)
@Column(name = "id_role")
private Integer idRole;
@Column(name = "descricao")
private String descricao;
@Column(name = "nome")
private String nome;
@ManyToMany(fetch = FetchType.EAGER)
@JoinTable(name = "permissao", joinColumns =
@JoinColumn(name = "id_role"), inverseJoinColumns =
@JoinColumn(name = "id_usuario"))
private List<Usuario> usuarios = new ArrayList<Usuario>();
[/code]
Na minha classe usuario tem o metodo getAuthorities que traz as roles daquele usuario.
fiz um teste pra ver se isso funcionaria mas nao.
usuarioController.getUsuario().getAuthorities().clear();
System.out.println(usuarioController.getUsuario().getAuthorities().toString());
Mas ele continua imprimindo todas roles do usuario.
Nao sei se deu pra entender mas he mais ou menos isso. Obg