Consulta com a API "Criteria" em um relacionamento Many-to-Many

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 ???

Eu sugiro que você leia esse post e então formate o seu post , porque do jeito que está, dificilmente alguém vai ler amigo.

Blz? Flw! :thumbup:

[DUPLICADO]

Ok. Obrigado!! Estou formatando minha mensagem.