Pegar o valor de um campo de outra tabela

Java

28/05/2015

Olá pessoal!

Como faço para declarar que o valor de um campo de uma tabela é igual ao valor de um campo de outra tabela? Por exemplo, tenho duas tabelas: Cliente e Endereço. O relacionamento entre as tabelas é feito pelo campo codcliente. Só que no momento de cadastrar um endereço o campo codcli da tabela Endereço está vazio. Por isso, preciso definir que o código do cliente no cadastro do endereço é igual ao código do cliente já cadastrado. Sou iniciante em Java e não estou sabendo fazer isso. Será que alguém poderia me ajudar?

Segue o código da classe Endereço e a página de cadastro:

Endereco
@Entity
public class Endereco implements Serializable {

    private static final long serialVersionUID = 1L;

    private Integer codendereco;
    private String logradouro;
    private String numero;
    private String complemento;
    private String bairro;
    private String cidade;
    private String cep;
    private TipoEndereco tipoendereco;
    private UFEndereco uf;
    private Cliente cliente;

    @Id
    @GeneratedValue
    public Integer getCodendereco() {
        return codendereco;
    }

    public void setCodendereco(Integer codendereco) {
        this.codendereco = codendereco;
    }

    public String getLogradouro() {
        return logradouro;
    }

    public void setLogradouro(String logradouro) {
        this.logradouro = logradouro;
    }

    public String getNumero() {
        return numero;
    }

    public void setNumero(String numero) {
        this.numero = numero;
    }

    public String getComplemento() {
        return complemento;
    }

    public void setComplemento(String complemento) {
        this.complemento = complemento;
    }

    public String getBairro() {
        return bairro;
    }

    public void setBairro(String bairro) {
        this.bairro = bairro;
    }

    public String getCidade() {
        return cidade;
    }

    public void setCidade(String cidade) {
        this.cidade = cidade;
    }

    public String getCep() {
        return cep;
    }

    public void setCep(String cep) {
        this.cep = cep;
    }

    @Enumerated(EnumType.STRING)
    public TipoEndereco getTipoendereco() {
        return tipoendereco;
    }

    public void setTipoendereco(TipoEndereco tipoendereco) {
        this.tipoendereco = tipoendereco;
    }

    @Enumerated(EnumType.STRING)
    public UFEndereco getUf() {
        return uf;
    }

    public void setUf(UFEndereco uf) {
        this.uf = uf;
    }

    @ManyToOne
    @JoinColumn(name = "codcliente")
    public Cliente getCliente() {
        return cliente;
    }

    public void setCliente(Cliente cliente) {
        this.cliente = cliente;
    }

    @Override
    public int hashCode() {
        int hash = 3;
        hash = 59 * hash + Objects.hashCode(this.codendereco);
        hash = 59 * hash + Objects.hashCode(this.logradouro);
        hash = 59 * hash + Objects.hashCode(this.numero);
        hash = 59 * hash + Objects.hashCode(this.complemento);
        hash = 59 * hash + Objects.hashCode(this.bairro);
        hash = 59 * hash + Objects.hashCode(this.cidade);
        hash = 59 * hash + Objects.hashCode(this.cep);
        hash = 59 * hash + Objects.hashCode(this.tipoendereco);
        hash = 59 * hash + Objects.hashCode(this.uf);
        hash = 59 * hash + Objects.hashCode(this.cliente);
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final Endereco other = (Endereco) obj;
        if (!Objects.equals(this.codendereco, other.codendereco)) {
            return false;
        }
        if (!Objects.equals(this.logradouro, other.logradouro)) {
            return false;
        }
        if (!Objects.equals(this.numero, other.numero)) {
            return false;
        }
        if (!Objects.equals(this.complemento, other.complemento)) {
            return false;
        }
        if (!Objects.equals(this.bairro, other.bairro)) {
            return false;
        }
        if (!Objects.equals(this.cidade, other.cidade)) {
            return false;
        }
        if (!Objects.equals(this.cep, other.cep)) {
            return false;
        }
        if (this.tipoendereco != other.tipoendereco) {
            return false;
        }
        if (this.uf != other.uf) {
            return false;
        }
        if (!Objects.equals(this.cliente, other.cliente)) {
            return false;
        }
        return true;
    }

}


EnderecoBean
@ManagedBean(name="enderecoBean")
@RequestScoped
public class EnderecoBean {

    private Endereco endereco = new Endereco();
    private List<Endereco> lista;    
    private List<TipoEndereco> tiposEndereco;
    private List<UFEndereco> ufs;
    private List<Cliente> listaClientes;

    public String novo() {
        this.endereco = new Endereco();
        return "/restrito/cadastrarendereco";        
    }

    public String editar() {
        return "/restrito/cadastrarendereco";
    }

    public void salvar() {

        FacesContext facesContext = FacesContext.getCurrentInstance();         

        EnderecoRN enderecoRN = new EnderecoRN();
        enderecoRN.salvar(this.endereco);

        FacesMessage facesMessage = new FacesMessage("Endereço cadastrado com sucesso!");
        facesContext.addMessage(null, facesMessage);

    }

    public String excluir() throws RNException {

        EnderecoRN enderecoRN = new EnderecoRN();
        enderecoRN.excluir(this.endereco);

        this.lista = null;
        return null;
    }    

    public Endereco getEndereco() {
        return endereco;
    }

    public void setEndereco(Endereco endereco) {
        this.endereco = endereco;
    }

    public List<Endereco> getLista() {
        if (this.lista == null) {
            EnderecoRN enderecoRN = new EnderecoRN();
            this.lista = enderecoRN.listar();
        }
        return lista;
    }    

    public List<TipoEndereco> getTiposEndereco() {
        return tiposEndereco = Arrays.asList(TipoEndereco.values());
    }

    public List<UFEndereco> getUfs() {
        return ufs = Arrays.asList(UFEndereco.values());
    }

    public List<Cliente> getListaClientes() {
        return listaClientes;
    }

}


Cadastro de Endereço
<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:p="http://primefaces.org/ui">
    <h:head>
        <title>Cadastro de Endereço</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
        <h:outputStylesheet library="css" name="sistema.css" />
    </h:head>
    <h:body>  

        <header>
            <div style="float: right; margin-right: 110px">
        <h:form style="display: inline-block">                                   
                    <p:menubar styleClass="menu-sistema">
            <p:submenu label="Cadastros">
                            <p:menuitem value="Clientes" url="/restrito/cadastrarcliente.jsf"/>
                            <p:menuitem value="Seguros" url="/restrito/cadastrarseguro.jsf"/>
                        </p:submenu>
            <p:submenu label="Consultas">
                            <p:menuitem value="Clientes" url="/restrito/consultarclientes.jsf"/>
                            <p:menuitem value="Seguros" url="/restrito/consultarseguros.jsf"/>
                        </p:submenu>
            <p:submenu label="Relatórios">
                            <p:menuitem value="Clientes" url="/restrito/relclientes.jsf"/>
                            <p:menuitem value="Seguros" url="/restrito/relseguros.jsf"/>
                        </p:submenu>
                            <p:menuitem value="Sair" icon="ui-icon-close" onclick="document.location='#{request.contextPath}/j_spring_security_logout'" />
                    </p:menubar>
        </h:form>
            </div>
            <div style="clear: both"></div>
    </header>        

    <h:form id="frmCadastro" acceptcharset="ISO-8859-1">

        <h1>Novo endereço</h1>

        <p:messages id="messages" autoUpdate="true" closable="true" />        

        <p:toolbar style="margin-top: 20px">
            <p:toolbarGroup>
                <p:button value="Novo" outcome="/restrito/cadastrarendereco" icon="ui-icon-plusthick"/>
                <p:commandButton action="#{enderecoBean.salvar()}" value="Salvar" ajax="false" update="@frmCadastro" icon="ui-icon-disk"/>
        </p:toolbarGroup>
            <p:toolbarGroup align="right">
                <p:button value="Pesquisar" outcome="/restrito/consultarclientes" icon="ui-icon-arrowreturnthick-1-w"/>
        </p:toolbarGroup>            
    </p:toolbar> 

        <br/><br/>

        <p:panel header="Dados do Endereço" style="margin-top: 20px">

            <h:inputHidden id="codigo" value="#{enderecoBean.endereco.codendereco}" />

            <h:panelGrid columns="4" style="width: 100%" columnClasses="rotulo, campo" cellpadding="3" cellspacing="3">

                <h:outputText value="Cliente:" />
                <p:inputText id="cliente" value="#{clienteBean.cliente.nome}" required="true" size="50" readonly="true"/>                

                <h:outputText value="Código:" />
                <p:inputText id="codcliente" value="#{clienteBean.cliente.codigo}" required="true" size="10" readonly="true"/>                

                <h:outputText value="Tipo de Endereço:" />
                <p:selectOneMenu id="tipoEndereco" value="#{enderecoBean.endereco.tipoendereco}" label="Tipo de Endereço" required="true" requiredMessage="Tipo de Endereço deve ser informado." immediate="true">
                    <f:selectItem itemLabel="Selecione" />
                    <f:selectItems value="#{enderecoBean.tiposEndereco}" var="tipoEndereco" itemLabel="#{tipoEndereco.descricao}" itemValue="#"/>
                </p:selectOneMenu> 

                <h:outputText value="Logradouro:" />
                <p:inputText id="log" value="#{enderecoBean.endereco.logradouro}" required="true" label="Logradouro" size="60" requiredMessage="Logradouro deve ser informado." immediate="true"/>

                <h:outputText value="Número:" />
                <p:inputMask mask="9?999999999" value="#{enderecoBean.endereco.numero}" required="true" label="Nº" size="10" maxlength="10" requiredMessage="Número deve ser informado." immediate="true"/>

                <h:outputText value="Complemento:" />
                <p:inputText value="#{enderecoBean.endereco.complemento}" size="50" maxlength="20" />

                <h:outputText value="Bairro:" />
                <p:inputText value="#{enderecoBean.endereco.bairro}" label="Bairro" required="true" size="50" maxlength="50" requiredMessage="Bairro deve ser informado." immediate="true"/>

                <h:outputText value="Cidade:" />
                <p:inputText value="#{enderecoBean.endereco.cidade}" label="Cidade" required="true" size="50" maxlength="50" requiredMessage="Cidade deve ser informada." immediate="true"/>                

                <h:outputText value="UF:" />
                <p:selectOneMenu id="uf" value="#{enderecoBean.endereco.uf}" required="true" requiredMessage="UF deve ser informado." immediate="true">
                    <f:selectItem itemLabel="Selecione" />
                    <f:selectItems value="#{enderecoBean.ufs}" var="uf" itemLabel="#{uf.descricao}" itemValue="#"/>
                </p:selectOneMenu>

                <h:outputText value="CEP:" />
                <p:inputMask id="cep" mask="99999-999" value="#{enderecoBean.endereco.cep}" required="true" size="10" maxlength="10" requiredMessage="CEP deve ser informado." immediate="true"/>
            </h:panelGrid>
        </p:panel>              
    </h:form>

</h:body>
</html>


Obrigada.
Sgrandini

Sgrandini

Curtidas 0
POSTAR