Dúvida em relação entre entidades

Galera,

Queria uma ajuda numa situação. Eu tenho duas tabelas o banco: Usuario e TipoAcesso. Em usuario eu tenho uma chave estrangeira de TipoAcesso. Até ai tudo bem, mas quando eu vou exibir isso na view, eu só estou conseguindo listar os usuarios exibindo o ID de TipoAcesso e não a Descricao.

Ta saindo assim:
Nome - Email - Tipo acesso
Pablo - pv… - 1

E eu queria que ao inves do 1 saisse “Administrador” por exemplo.

Eu tava pensando em tratar usando um <c:choose> mas não conseguir desenvolver o raciocinio de como relacionar com o bean de tipos.

Agradeço desde já.

listar.xhtml

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:c="http://java.sun.com/jsp/jstl/core"
      xmlns:p="http://primefaces.prime.com.tr/ui">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <f:view>
        <h:body>
            <ui:composition template="/app/template/templateMaster.xhtml">
                <ui:define name="content">
                    <h:form>
                        <c:if test="#{UsuarioBEAN.verificaSessao()}">
                            <p:dataTable var="itens" value="#{UsuarioBEAN.listaTodos}"
                                         paginator="true" rows="10"
                                         paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                                         rowsPerPageTemplate="5,10,15">
                                
                                <f:facet name="header">
                                    <h:outputText value="Id"/>
                                </f:facet>

                                <p:column>
                                    <f:facet name="header">
                                        <h:outputText value="Id"/>
                                    </f:facet>
                                    <h:outputText value="#{itens.idUsuario}"/>
                                </p:column>
                                <p:column>
                                    <f:facet name="header">
                                        <h:outputText value="Nome"/>
                                    </f:facet>
                                    <h:commandLink action="irParaAlterar">
                                        <h:outputText value="#{itens.nome}"/>
                                        <f:setPropertyActionListener target="#{UsuarioBEAN.login}" value="#{itens}"/>
                                    </h:commandLink>
                                </p:column>
                                <p:column>
                                    <f:facet name="header">
                                        <h:outputText value="Email"/>
                                    </f:facet>
                                    <h:outputText value="#{itens.email}"/>
                                </p:column>
                                <p:column>
                                    <f:facet name="header">
                                        <h:outputText value="Telefone"/>
                                    </f:facet>
                                    <h:outputText value="#{itens.ddd} #{itens.telefone}"/>
                                </p:column>
                                <p:column>
                                    <f:facet name="header">
                                        <h:outputText value="Cargo"/>
                                    </f:facet>
                                    <h:outputText value="#{itens.cargo}"/>
                                </p:column>
                                <p:column>
                                    <f:facet name="header">
                                        <h:outputText value="Setor"/>
                                    </f:facet>
                                    <h:outputText value="#{itens.setor}"/>
                                </p:column>
                                <p:column>
                                    <f:facet name="header">
                                        <h:outputText value="Tipo Acesso"/>
                                    </f:facet>
                                    
                                    [size=18][color=red]<c:choose>
                                        <c:when test="#{itens.tipoAcesso}">
                                            <h:outputText value="teste0"/>
                                        </c:when>
                                        <c:otherwise>
                                            <h:outputText value="Vazio"/>
                                        </c:otherwise>
                                    </c:choose>[/color][/size]
                                    
                                </p:column>
                                <p:column>
                                    <f:facet name="header">
                                        <h:outputText value="Ativo"/>
                                    </f:facet>
                                    <h:outputText value="#{itens.ativo}"/>
                                </p:column>
                            </p:dataTable>
                        </c:if>
                    </h:form>

                </ui:define>
            </ui:composition>
        </h:body>
    </f:view>
</html>

TipoAcesso.java

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package br.com.pablo.entity;

/**
*

  • @author pablosouza
    */
    public class TipoAcesso {

    private Integer idTipoAcesso;
    private String nome;

    public TipoAcesso() {
    }

    public Integer getIdTipoAcesso() {
    return idTipoAcesso;
    }

    public void setIdTipoAcesso(Integer idTipoAcesso) {
    this.idTipoAcesso = idTipoAcesso;
    }

    public String getNome() {
    return nome;
    }

    public void setNome(String nome) {
    this.nome = nome;
    }
    }
    [/code]

TipoAcessoDAO

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */

package br.com.pablo.dao;

import br.com.pablo.entity.TipoAcesso;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

/**
*

  • @author pablosouza
    */
    public class TipoAcessoDAO extends GenericDAO{

    public List getTodos() throws SQLException{
    ArrayList tipos = new ArrayList();
    String sql = “SELECT * FROM TB_TIPO_ACESSO”;
    ResultSet rs = executarQuery(sql);
    while(rs.next()){
    TipoAcesso tipo = preencherDadosTipoAcesso(rs);
    tipos.add(tipo);
    }
    return tipos;
    }

    public TipoAcesso getTipoAcesso(Integer idTipoAcesso) throws SQLException{
    String sql = “SELECT * FROM TB_TIPO_ACESSO WHERE ID_TIPO_ACESSO = ?”;
    ResultSet rs = executarQuery(sql, idTipoAcesso);
    TipoAcesso tipo = preencherDadosTipoAcesso(rs);
    return tipo;
    }

    public TipoAcesso preencherDadosTipoAcesso(ResultSet rs) throws SQLException{
    TipoAcesso tipo = new TipoAcesso();
    tipo.setIdTipoAcesso(rs.getInt(“ID_TIPO_ACESSO”));
    tipo.setNome(rs.getString(“NOME”));
    return tipo;
    }

    public String getDescricaoTipoAcesso(Integer idTipoAcesso) throws SQLException{
    String sql = “SELECT * FROM TB_TIPO_ACESSO WHERE ID_TIPO_ACESSO = ?”;
    ResultSet rs = executarQuery(sql, idTipoAcesso);
    TipoAcesso tipo = preencherDadosTipoAcesso(rs);
    return tipo.getNome();
    }
    }
    [/code]
    TipoAcessoBEAN

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */

package br.com.pablo.bean;

import br.com.pablo.dao.TipoAcessoDAO;
import br.com.pablo.entity.TipoAcesso;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.model.SelectItem;

/**
*

  • @author pablosouza
    */
    @ManagedBean
    @RequestScoped
    public class TipoAcessoBEAN {

    private List tipos = null;
    private TipoAcesso tipo = new TipoAcesso();
    private List combo;

    /** Creates a new instance of TipoAcessoBEAN */
    public TipoAcessoBEAN() {
    }

    public TipoAcesso getTipo() {
    return tipo;
    }

    public void setTipo(TipoAcesso tipo) {
    this.tipo = tipo;
    }

    public List getTipos() {
    return tipos;
    }

    public void setTipos(List tipos) {
    this.tipos = tipos;
    }

    public List getTodos() throws SQLException {
    return tipos = new TipoAcessoDAO().getTodos();
    }

    public List getCombo() throws SQLException {
    if (combo == null) {
    ArrayList setores = (ArrayList) this.getTodos();
    combo = new ArrayList();
    for (TipoAcesso tipo : setores) {
    combo.add(new SelectItem(tipo.getIdTipoAcesso(), tipo.getNome()));
    }
    }
    return combo;
    }
    }
    [/code]

Usuario.java

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package br.com.pablo.entity;

import java.io.Serializable;
import java.util.List;
import javax.persistence.Id;

/**
*

  • @author alex
    */

public class Usuario implements Serializable {

private Integer idUsuario;
private String nome;
private Integer ddd;
private String telefone;
private String cargo;
private String email;
private String senha;
private Integer tipoAcesso;
private String setor;
private Integer ativo;
private List<Acompanhamento> acompanhamentos;
private List<Atendimento> atendimentos;


public Usuario() {
}

public Integer getAtivo() {
    return ativo;
}

public void setAtivo(Integer ativo) {
    this.ativo = ativo;
}

public String getCargo() {
    return cargo;
}

public void setCargo(String cargo) {
    this.cargo = cargo;
}

public Integer getDdd() {
    return ddd;
}

public void setDdd(Integer ddd) {
    this.ddd = ddd;
}

public String getEmail() {
    return email;
}

public void setEmail(String email) {
    this.email = email;
}

public String getNome() {
    return nome;
}

public void setNome(String nome) {
    this.nome = nome;
}

public String getSenha() {
    return senha;
}

public void setSenha(String senha) {
    this.senha = senha;
}

public String getSetor() {
    return setor;
}

public void setSetor(String setor) {
    this.setor = setor;
}

public String getTelefone() {
    return telefone;
}

public void setTelefone(String telefone) {
    this.telefone = telefone;
}

public List<Acompanhamento> getAcompanhamentos() {
    return acompanhamentos;
}

public void setAcompanhamentos(List<Acompanhamento> acompanhamentos) {
    this.acompanhamentos = acompanhamentos;
}

public List<Atendimento> getAtendimentos() {
    return atendimentos;
}

public void setAtendimentos(List<Atendimento> atendimentos) {
    this.atendimentos = atendimentos;
}

public Integer getIdUsuario() {
    return idUsuario;
}

public void setIdUsuario(Integer idUsuario) {
    this.idUsuario = idUsuario;
}

public Integer getTipoAcesso() {
    return tipoAcesso;
}

public void setTipoAcesso(Integer tipoAcesso) {
    this.tipoAcesso = tipoAcesso;
}

}
[/code]
UsuarioDAO

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package br.com.pablo.dao;

import br.com.pablo.entity.Usuario;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;

/**
*

  • @author alex
    */
    public class UsuarioDAO extends GenericDAO {

    public UsuarioDAO() {
    }

    public void adcionarUsuario(Usuario usuario) throws SQLException {
    String query = “INSERT INTO TB_USUARIO(NOME,DDD,TELEFONE,CARGO,”
    + “EMAIL,SENHA,SETOR,TIPO_ACESSO,ATIVO) VALUES (?,?,?,?,?,?,?,?,?)”;
    executarComando(query,
    usuario.getNome(),
    usuario.getDdd(),
    usuario.getTelefone(),
    usuario.getCargo(),
    usuario.getEmail(),
    usuario.getSenha(),
    usuario.getSetor(),
    usuario.getTipoAcesso(),
    usuario.getAtivo());
    }

    public void atualizarUsuario(Usuario usuario) throws SQLException {
    String query = “UPDATE TB_USUARIO SET NOME = ?,DDD = ?,TELEFONE = ?,CARGO = ?,”
    + “EMAIL = ?,SENHA = ?,SETOR = ?,TIPO_ACESSO = ?,ATIVO = ? WHERE ID_USUARIO = ?”;
    executarComando(query,
    usuario.getNome(),
    usuario.getDdd(),
    usuario.getTelefone(),
    usuario.getCargo(),
    usuario.getEmail(),
    usuario.getSenha(),
    usuario.getSetor(),
    usuario.getTipoAcesso(),
    usuario.getAtivo(),
    usuario.getIdUsuario());
    }

    public void deletarUsuario(Integer idUsuario) throws SQLException {
    String query = “DELETE FROM TB_USUARIO WHERE ID_USUARIO = ?”;
    executarComando(query, idUsuario);
    }

    public Usuario getUsuario(Integer idUsuario) throws SQLException {
    ResultSet rs = executarQuery(“SELECT * FROM TB_USUARIO WHERE ID_USUARIO = ?”, idUsuario);
    Usuario usuario = preencherDadosUsuario(rs);
    rs.close();
    return usuario;
    }

    public List getTodos() throws SQLException {
    ArrayList usuarios = null;
    ResultSet rs = (ResultSet) executarQuery(“SELECT * FROM TB_USUARIO”);
    if (rs.next()) {
    usuarios = new ArrayList();
    do {
    Usuario usuario = preencherDadosUsuario(rs);
    usuarios.add(usuario);
    } while (rs.next());
    }
    rs.close();
    return usuarios;
    }

    private static Usuario preencherDadosUsuario(ResultSet rs) throws SQLException {
    Usuario toReturn = new Usuario();
    toReturn.setIdUsuario(rs.getInt(“ID_USUARIO”));
    toReturn.setNome(rs.getString(“NOME”));
    toReturn.setDdd(rs.getInt(“DDD”));
    toReturn.setTelefone(rs.getString(“TELEFONE”));
    toReturn.setCargo(rs.getString(“CARGO”));
    toReturn.setEmail(rs.getString(“EMAIL”));
    toReturn.setSenha(rs.getString(“SENHA”));
    toReturn.setSetor(rs.getString(“SETOR”));
    toReturn.setTipoAcesso(rs.getInt(“TIPO_ACESSO”));
    toReturn.setAtivo(rs.getInt(“ATIVO”));
    return toReturn;
    }

    public boolean isExiste(Usuario usuario) throws ClassNotFoundException, SQLException {
    ResultSet rs = (ResultSet) executarQuery(“SELECT * FROM TB_USUARIO WHERE EMAIL = ? AND SENHA = ?”,
    usuario.getEmail(),
    usuario.getSenha());
    if (rs.next()) {
    preencherDadosUsuario(rs, usuario);
    return true;
    }
    return false;
    }

    private static Usuario preencherDadosUsuario(ResultSet rs, Usuario toReturn) throws SQLException {
    toReturn.setIdUsuario(rs.getInt(“ID_USUARIO”));
    toReturn.setNome(rs.getString(“NOME”));
    toReturn.setDdd(rs.getInt(“DDD”));
    toReturn.setTelefone(rs.getString(“TELEFONE”));
    toReturn.setCargo(rs.getString(“CARGO”));
    toReturn.setEmail(rs.getString(“EMAIL”));
    toReturn.setSenha(rs.getString(“SENHA”));
    toReturn.setSetor(rs.getString(“SETOR”));
    toReturn.setTipoAcesso(rs.getInt(“TIPO_ACESSO”));
    toReturn.setAtivo(rs.getInt(“ATIVO”));
    return toReturn;
    }
    }
    [/code]
    UsuarioBEAN

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package br.com.pablo.bean;

import br.com.pablo.dao.TipoAcessoDAO;
import br.com.pablo.dao.UsuarioDAO;
import br.com.pablo.entity.Usuario;
import java.sql.SQLException;
import java.util.LinkedList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

/**
*

  • @author alex
    */
    @ManagedBean(name=“UsuarioBEAN”)
    @SessionScoped
    public class UsuarioBEAN {

    private Usuario login = new Usuario();
    private List usuarios;
    private String descricaoTipoAcesso = “”;

    public List getUsuarios() {
    return usuarios;
    }

    public void setUsuarios(LinkedList usuarios) {
    this.usuarios = usuarios;
    }

    public Usuario getLogin() {
    return login;
    }

    public void setLogin(Usuario login) {
    this.login = login;
    }

    /** Creates a new instance of UsuarioBEAN */
    public UsuarioBEAN() {
    if (login == null) {
    login = new Usuario();
    }
    }

    public String verificaLogin() throws SQLException, ClassNotFoundException {
    UsuarioDAO dao = new UsuarioDAO();

     if (dao.isExiste(login)) {
         return "irParaIndex";
     }
     return "refresh";
    

    }

    public boolean verificaSessao() {

     if (login.getEmail() == null) {
         return false;
     } else {
         return true;
     }
    

    }

    public List getListaTodos() throws SQLException {

     return this.usuarios = new UsuarioDAO().getTodos();
    

    }

    public String cadastrar() throws SQLException {
    UsuarioDAO dao = new UsuarioDAO();

     dao.adcionarUsuario(login);
     return "irParaListar";
    

    }

    public String alterar() throws SQLException {
    UsuarioDAO dao = new UsuarioDAO();

     dao.atualizarUsuario(login);
     return "irParaListar";
    

    }

    public String excluir() throws SQLException {
    UsuarioDAO dao = new UsuarioDAO();

     dao.deletarUsuario(login.getIdUsuario());
     return "irParaListar";
    

    }

    public String getTipoAcesso() throws SQLException {
    return descricaoTipoAcesso = new TipoAcessoDAO().getDescricaoTipoAcesso(login.getTipoAcesso());
    }

}
[/code]

antes de enviar pra view transforma o 1 em administrador no seu controller… ex: (o que vc ta enviando pra view com o valor).replace(“1”,“Administrador”);

c nao form String… é so da um .toString()

[quote=Pedro_GTI]antes de enviar pra view transforma o 1 em administrador no seu controller… ex: (o que vc ta enviando pra view com o valor).replace(“1”,“Administrador”);

c nao form String… é so da um .toString()[/quote]

O problema disso é que se eu mudar o registro no banco eu teria que mudar essa regra entende? Minha intenção é puxar essa informação do banco. :slight_smile:

Se não estou enganado, basta você sobrescrever o método toString nas suas classes de entidade TipoAcesso.java e Usuario.java retornando o valor que você quiser mostrar. No caso de TipoAcesso você retorna a descrição. Está mostrando o código porque este é o default do método toString na implementação do framework.

Cara… é so vc pegar o dado do banco e modificar ele para view… vc nao precisa alterar ele no banco é so pra mostrar pro usuario…