Consulta com API Criteria num relacionamento Many-to-Many

0 respostas
D

Classes Relacionadas.

[color=blue]* Usuario 1:N -> PermissaoAcesso <- N:1 GrupoAtendimento [/color]

Tenho 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", pois o usuário está nela?

Seguem as classes.

-----------------CLASSE USUARIO----------------------------------------------------- 

@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

}

-----------------CLASSE GRUPOATENDIMENTO-----------------------------------------------------

@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
}

-----------------CLASSE PERMISSAOACESSOPK -----------------------------------------------------

@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
}

-----------------CLASSE PERMISSAOACESSO -----------------------------------------------------

@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

}

-----------------TRECHO DA CLASSE USUARIOCONTROLLER -----------------------------------------------------

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", this.usuario) ) ;

select.list();

model = new ListDataModel((List) select);

return model;

}

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

------------------------------------------------------------------------------------

A tela está em anexo.

Alguma sugestão ???


Criado 12 de janeiro de 2009
Respostas 0
Participantes 1