Classes Relacionadas.
- Usuario 1:N -> PermissaoAcesso <- N:1 GrupoAtendimento
Tenha uma tela (JSF) que mostra os dados cadastrais do usuario e gostaria que mostrasse também todas as permissões de Acesso (PermissaoAcesso) dentro de um grid. O problema é que não estou conseguindo filtrar as permissões de acesso tendo como filtro a classe usuário. Como retornar a permissão que está na classe “PermissaoAcesso” sendo que a consulta é realizada pela classe “PermissaoAcessoPK” ?
Seguem as classes.
@Entity
@Table(name = “usuario”)
@NamedQueries({})
public class Usuario implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = “CODIGO”, nullable = false)
private Integer codigo;
@Column(name = “NOME”)
private String nome;
@Column(name = “ATIVO”)
private String ativo;
@Column(name = “SENHA”)
private String senha;
@Column(name = “PERMISSAOADM”)
private Character permissaoadm;
@Column(name = “EMAIL”)
private String email;
@Column(name = “LOGIN”)
private String login;
//gets e sets
}
@Entity
@Table(name = “grupoatendimento”)
@NamedQueries({})
public class GrupoAtendimento implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name = “CODIGO”, nullable = false)
private Integer codigo;
@Column(name = “NOME”)
private String nome;
@Column(name = “ATIVO”)
private Character ativo;
//gets e sets
}
Abaixo relacionamento N:N
@Embeddable
public class PermissaoAcessoPK implements Serializable {
private static final long serialVersionUID = -6197593475314743037L;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="usuario_codigo", insertable=true, updatable=true)
private Usuario usuario;
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name="grupoatendimento_codigo", insertable=true, updatable=true)
private GrupoAtendimento grupoAtendimento;
//gets e sets
}
@Entity
@Table(name = “permissaoacesso”)
@NamedQueries({})
public class PermissaoAcesso implements Serializable {
@EmbeddedId
private PermissaoAcessoPK primaryKey = new PermissaoAcessoPK();
@Column(name="permissao", nullable=false)
private String permissao;
//gets e sets
}
A classe UsuarioController tem um método que retorna um “model”.
public class UsuarioController {
private Usuario usuario;
private DataModel model;
private Session session;
…
public DataModel getTodos1() throws GenericoDAOException{
session = ConnectHibernateFactory.getInstance();
Criteria select = session.createCriteria(PermissaoAcessoPK.class);
select.add(Restrictions.eq(“usuario”, usuario) ) ;
select.list();
model = new ListDataModel((List) select);
return model;
}
Preciso mostrar na tela a permissão e o grupo atendimento.
Usuário: Fulano
Permissão Grupo Atendimento
Atender Assistência Técnica
Encaminhar Desenvolvimento de Softwares
Página JSF
<h:dataTable value=’#{usuarioView.todos1}’ var=‘item’ border=“1” styleClass=“tabela” headerClass=“cabecalho” rowClasses=“linha_a, linha_b” width=“100%”>
<h:column>
<f:facet name=“header”>
<h:outputText value=“Permissão”/>
</f:facet>
<h:outputText value="#{item.permissao}"/> ???
</h:column>
<h:column>
<f:facet name=“header”>
<h:outputText value=“GrupoAtendimento”/>
</f:facet>
<h:outputText value="#{item.getGrupoAtendimento.getNome}"/>
</h:column>
</h:dataTable>
Alguma sugestão ???