Aqui vai a classe Usuário e Papel na integra
[code]package br.ufrj.cos.portalfees.entity;
import java.io.Serializable;
import java.util.List;
import java.util.Set;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.Transient;
import javax.persistence.Version;
import org.hibernate.validator.Email;
import org.hibernate.validator.Length;
import org.hibernate.validator.NotNull;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.security.management.UserEnabled;
import org.jboss.seam.annotations.security.management.UserPassword;
import org.jboss.seam.annotations.security.management.UserPrincipal;
import org.jboss.seam.annotations.security.management.UserRoles;
@Entity
@Name(“usuario”)
public class Usuario implements Serializable
{
/**
*
*/
private static final long serialVersionUID = -1929518031977185775L;
private Long id;
private Integer version;
private String nome;
private String email;
private String login;
private String senha;
private String titulo;
private Boolean profissional;
private boolean acessoAutorizado;
private Set papeis;
private List areaPesquisaList;
private InstituicaoEnsino instituicaoEnsino;
private Boolean recebeMensagensEmail;
public Boolean getRecebeMensagensEmail() {
return recebeMensagensEmail;
}
public void setRecebeMensagensEmail(Boolean recebeMensagensEmail) {
this.recebeMensagensEmail = recebeMensagensEmail;
}
@ManyToOne
public InstituicaoEnsino getInstituicaoEnsino() {
return instituicaoEnsino;
}
public Boolean isProfissional() {
return profissional;
}
public void setProfissional(Boolean profissional) {
this.profissional = profissional;
}
public void setInstituicaoEnsino(InstituicaoEnsino instituicaoEnsino) {
this.instituicaoEnsino = instituicaoEnsino;
}
@NotNull
public String getTitulo() {
return titulo;
}
public void setTitulo(String titulo) {
this.titulo = titulo;
}
@NotNull
@UserPrincipal
public String getLogin() {
return login;
}
public void setLogin(String login) {
this.login = login;
}
@NotNull
@Length(min=6, message="#{messages['usuario.senha.tamanhoMinimo.exception']}")
@UserPassword(hash="md5")
public String getSenha() {
return senha;
}
public void setSenha(String senha) {
this.senha = senha;
}
@NotNull
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
@NotNull
@Email
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Id @GeneratedValue
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Version
public Integer getVersion() {
return version;
}
private void setVersion(Integer version) {
this.version = version;
}
@UserRoles
@ManyToMany(targetEntity=Papel.class)
public Set<Papel> getPapeis() {
return papeis;
}
public void setPapeis(Set<Papel> papeis) {
this.papeis = papeis;
}
@ManyToMany(mappedBy="usuarioList")
public List<AreaPesquisa> getAreaPesquisaList() {
return areaPesquisaList;
}
public void setAreaPesquisaList(List<AreaPesquisa> areaPesquisaList) {
this.areaPesquisaList = areaPesquisaList;
}
@UserEnabled
public boolean isAcessoAutorizado() {
return acessoAutorizado;
}
public void setAcessoAutorizado(boolean acessoAutorizado) {
this.acessoAutorizado = acessoAutorizado;
}
@Transient
public String getPerfil() {
String perfil = null;
for (Papel p :getPapeis()) {
perfil = p.getNome();
}
return perfil;
}
@Override
public boolean equals(Object o) {
Usuario usuario = (Usuario) o;
if (usuario.getNome().equals(this.nome)) {
return true;
}
return false;
}
}
[/code]
[code]package br.ufrj.cos.portalfees.entity;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.security.management.RoleName;
@Entity
@Name(“papel”)
public class Papel implements Serializable {
/**
*
*/
private static final long serialVersionUID = 8076316478170311419L;
private Long id;
private String nome;
@Id @GeneratedValue
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@RoleName
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
[/code]
Apesar de ser uma entidade, a classe Papel só vai ter como valores aqueles que citei la no primeiro post (Administrador, Gerente, etc). Fiz deste jeito pensando em uma “upgrade”, onde poderiam existir vários papeis.
Tem como eu fazer algo do tipo String sql = "select u from Usuario u where u.papeis.nome in ( :papeis ) order by u.nome";
e então passar um List com as strings correspondentes?
abraço!