Solucionado (ver solução)
Solucionado
(ver solução)
10
respostas

Busca pelo ID

ola estou tentando fazer uma busca aonde o usuário informa uma id e a aplicação retorna o item com seus campos, mas o mais próximo que cheguei foi retornar uma lista inteira segue meu código para analise obs: ignorem não estar em camelCase

DAO

package br.com.bancoImpl.dao;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;

import br.com.bancoImpl.model.SITE;
@Transactional
@Repository
public class SiteDAO {
     @PersistenceContext
        private EntityManager manager;

        public void gravar(SITE site){
            manager.persist(site);
        }


        /*
         * Retorna lista inteira
        @SuppressWarnings("unchecked")
        public List<SITE> lista() {

        return  manager.createQuery("FROM " + SITE.class.getName()).getResultList();
        }
         */
        public void Busca(SITE site) {
            manager.find(SITE.class, site.getSIGLA());

        }
}

Controller

package br.com.bancoImpl.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import br.com.bancoImpl.dao.SiteDAO;
import br.com.bancoImpl.model.SITE;

@Controller
public class SiteController {

     @Autowired
        private SiteDAO siteDao;
     @RequestMapping("/form")
        public String form(){
            return "/form";
        }
     @RequestMapping("/Criar")
     public String gravar(SITE site){
            System.out.println(site);
            siteDao.gravar(site);
            return "/ok";
        }
     @RequestMapping("/lista")
        public String lista(){
            return "/lista";
        }
     /*
      * Retorna lista inteira
     @RequestMapping("/Busca")
     public ModelAndView buscar(){
              List<SITE> site = siteDao.lista();
            ModelAndView modelAndView = new ModelAndView("/busca");
            modelAndView.addObject("site", site);
            System.out.println(site);
            return modelAndView;
        }
        */
     @RequestMapping("/Busca")
     public String Busca(SITE site) {

            siteDao.Busca(site);
            System.out.println(site);
         return "/busca";
     }


}

lista da busca

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    <table>
    <tr>
        <td>SIGLA</td>
        <td>NOME</td>
        <td>ENDEREÇO</td>
    </tr>


        <c:forEach items="${site}" var="site">
        <tr>
            <td>${site.SIGLA}</td>
            <td>${site.NOME}</td>
            <td>${site.ENDEREÇO}</td>
        </tr>
    </c:forEach>
</table>
</body>
</html>

form para busca

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    <form action="/bancoImpl2/Busca" method="get">
        <div>
            <Label>Sigla</Label> <input type="text" name="SIGLA">
        </div>


        <button type="submit">Buscar</button>
    </form>

</body>
</html>
10 respostas

teria alguma aula que me ajudaria nisso? toda ajuda é bem vinda

Boa noite, Renan! Como vai?

Dá uma olhada nessa aula que ela deve te ajudar nessa questão de buscas com a JPA!

Qualquer coisa, é só falar!

Grande abraço e bons estudos, meu aluno!

Bom dia Gabriel, seguindo os exemplos ele até tenta fazer o select como deveria, porem por algum motivo ele esta trazendo tudo null, mesmo existindo a sigla digitada e também na tela do navegador ele não mostra nem um item só linha dos titulo

Hibernate: select site0_.SIGLA as SIGLA1_0_0_, site0_.ALTITUDE as ALTITUDE2_0_0_, site0_.BAIRRO as BAIRRO3_0_0_, site0_.CAMPO_TELEFÔNICA as CAMPO_TE4_0_0_, site0_.CEP as CEP5_0_0_, site0_.CHAVES as CHAVES6_0_0_, site0_.COMPLEMENTO as COMPLEME7_0_0_, site0_.CONTATO as CONTATO8_0_0_, site0_.DISTRITO as DISTRITO9_0_0_, site0_.EMAIL as EMAIL10_0_0_, site0_.EMPRESA_TERCEIRA_OEM as EMPRESA11_0_0_, site0_.ENDEREÇO as ENDEREÇ12_0_0_, site0_.ID_DETENTORA as ID_DETE13_0_0_, site0_.LATITUDE as LATITUD14_0_0_, site0_.LONGITUDE as LONGITU15_0_0_, site0_.MUNICÍPIO as MUNICÍP16_0_0_, site0_.NOME as NOME17_0_0_, site0_.OBSERVAÇÃO as OBSERVA18_0_0_, site0_.PROPRIETÁRIO as PROPRIE19_0_0_, site0_.SIGLA2 as SIGLA20_0_0_, site0_.SOLICITAÇÃO_DE_ACESSO as SOLICIT21_0_0_, site0_.TIPO_DE_CONTRATO as TIPO_DE22_0_0_, site0_.TIPO_DE_IMÓVEL as TIPO_DE23_0_0_, site0_.TIPO_DE_SITE as TIPO_DE24_0_0_, site0_.ÁREA as ÁREA25_0_0_, site0_.ÁREA_OEM as ÁREA_OE26_0_0_ from SITE site0_ where site0_.SIGLA=?
SITE [SIGLA=DEL, NOME=null, DISTRITO=null, MUNICÍPIO=null, BAIRRO=null, ENDEREÇO=null, COMPLEMENTO=null, CEP=null, LATITUDE=null, LONGITUDE=null, ALTITUDE=null, ÁREA=null, TIPO_DE_CONTRATO=null, PROPRIETÁRIO=null, ID_DETENTORA=null, SIGLA2=null, TIPO_DE_IMÓVEL=null, TIPO_DE_SITE=null, SOLICITAÇÃO_DE_ACESSO=null, CHAVES=null, ÁREA_OEM=null, CAMPO_TELEFÔNICA=null, EMAIL=null, CONTATO=null, OBSERVAÇÃO=null, EMPRESA_TERCEIRA_OEM=null]

tem alguma ideia do que poderia estar acontecendo ?

Opa, Renan! Vc poderia postar aqui o código da classe site?

segue a classe site em 2 partes

package br.com.bancoImpl.model;

import java.io.Serializable;

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
public class SITE implements Serializable {


    private static final long serialVersionUID = 1L;
    @Id
    private String SIGLA;
    private String NOME;
    private String DISTRITO;
    private String MUNICÍPIO;
    private String BAIRRO;
    private String ENDEREÇO;
    private String COMPLEMENTO;
    private String CEP;
    private String LATITUDE;
    private String LONGITUDE;
    private String ALTITUDE;
    private String ÁREA;
    private String TIPO_DE_CONTRATO;
    private String PROPRIETÁRIO;
    private String ID_DETENTORA;
    private String SIGLA2;
    private String TIPO_DE_IMÓVEL;
    private String TIPO_DE_SITE;
    private String SOLICITAÇÃO_DE_ACESSO;
    private String CHAVES;
    private String ÁREA_OEM;
    private String CAMPO_TELEFÔNICA;
    private String EMAIL;
    private String CONTATO;
    private String OBSERVAÇÃO;
    private String EMPRESA_TERCEIRA_OEM;

    public String getSIGLA() {
        return SIGLA;
    }
    public void setSIGLA(String sIGLA) {
        SIGLA = sIGLA;
    }
    public String getNOME() {
        return NOME;
    }
    public void setNOME(String nOME) {
        NOME = nOME;
    }
    public String getDISTRITO() {
        return DISTRITO;
    }
    public void setDISTRITO(String dISTRITO) {
        DISTRITO = dISTRITO;
    }
    public String getMUNICÍPIO() {
        return MUNICÍPIO;
    }
    public void setMUNICÍPIO(String mUNICÍPIO) {
        MUNICÍPIO = mUNICÍPIO;
    }
    public String getBAIRRO() {
        return BAIRRO;
    }
    public void setBAIRRO(String bAIRRO) {
        BAIRRO = bAIRRO;
    }
    public String getENDEREÇO() {
        return ENDEREÇO;
    }
    public void setENDEREÇO(String eNDEREÇO) {
        ENDEREÇO = eNDEREÇO;
    }
    public String getCOMPLEMENTO() {
        return COMPLEMENTO;
    }
    public void setCOMPLEMENTO(String cOMPLEMENTO) {
        COMPLEMENTO = cOMPLEMENTO;
    }
    public String getCEP() {
        return CEP;
    }
    public void setCEP(String cEP) {
        CEP = cEP;
    }
    public String getLATITUDE() {
        return LATITUDE;
    }
    public void setLATITUDE(String lATITUDE) {
        LATITUDE = lATITUDE;
    }
    public String getLONGITUDE() {
        return LONGITUDE;
    }
    public void setLONGITUDE(String lONGITUDE) {
        LONGITUDE = lONGITUDE;
    }
    public String getALTITUDE() {
        return ALTITUDE;
    }
    public void setALTITUDE(String aLTITUDE) {
        ALTITUDE = aLTITUDE;
    }
    public String getÁREA() {
        return ÁREA;
    }
    public void setÁREA(String áREA) {
        ÁREA = áREA;
    }
    public String getTIPO_DE_CONTRATO() {
        return TIPO_DE_CONTRATO;
    }
    public void setTIPO_DE_CONTRATO(String tIPO_DE_CONTRATO) {
        TIPO_DE_CONTRATO = tIPO_DE_CONTRATO;
    }
    public String getPROPRIETÁRIO() {
        return PROPRIETÁRIO;
    }
    public void setPROPRIETÁRIO(String pROPRIETÁRIO) {
        PROPRIETÁRIO = pROPRIETÁRIO;
    }
    public String getID_DETENTORA() {
        return ID_DETENTORA;
    }
    public void setID_DETENTORA(String iD_DETENTORA) {
        ID_DETENTORA = iD_DETENTORA;
    }
    public String getSIGLA2() {
        return SIGLA2;
    }
    public void setSIGLA2(String sIGLA2) {
        SIGLA2 = sIGLA2;
    }
    public String getTIPO_DE_IMÓVEL() {
        return TIPO_DE_IMÓVEL;
    }
    public void setTIPO_DE_IMÓVEL(String tIPO_DE_IMÓVEL) {
        TIPO_DE_IMÓVEL = tIPO_DE_IMÓVEL;
    }
    public String getTIPO_DE_SITE() {
        return TIPO_DE_SITE;
    }
    public void setTIPO_DE_SITE(String tIPO_DE_SITE) {
        TIPO_DE_SITE = tIPO_DE_SITE;
    }
    public String getSOLICITAÇÃO_DE_ACESSO() {
        return SOLICITAÇÃO_DE_ACESSO;
    }
    public void setSOLICITAÇÃO_DE_ACESSO(String sOLICITAÇÃO_DE_ACESSO) {
        SOLICITAÇÃO_DE_ACESSO = sOLICITAÇÃO_DE_ACESSO;
    }
    public String getCHAVES() {
        return CHAVES;
    }
    public void setCHAVES(String cHAVES) {
        CHAVES = cHAVES;
    }
    public String getÁREA_OEM() {
        return ÁREA_OEM;
    }
    public void setÁREA_OEM(String áREA_OEM) {
        ÁREA_OEM = áREA_OEM;
    }
    public String getCAMPO_TELEFÔNICA() {
        return CAMPO_TELEFÔNICA;
    }
    public void setCAMPO_TELEFÔNICA(String cAMPO_TELEFÔNICA) {
        CAMPO_TELEFÔNICA = cAMPO_TELEFÔNICA;
    }
    public String getEMAIL() {
        return EMAIL;
    }
    public void setEMAIL(String eMAIL) {
        EMAIL = eMAIL;
    }
    public String getCONTATO() {
        return CONTATO;
    }
    public void setCONTATO(String cONTATO) {
        CONTATO = cONTATO;
    }
    public String getOBSERVAÇÃO() {
        return OBSERVAÇÃO;
    }
    public void setOBSERVAÇÃO(String oBSERVAÇÃO) {
        OBSERVAÇÃO = oBSERVAÇÃO;
    }
    public String getEMPRESA_TERCEIRA_OEM() {
        return EMPRESA_TERCEIRA_OEM;
    }
    public void setEMPRESA_TERCEIRA_OEM(String eMPRESA_TERCEIRA_OEM) {
        EMPRESA_TERCEIRA_OEM = eMPRESA_TERCEIRA_OEM;
    }

    ...
...
@Override
    public String toString() {
        return "SITE [SIGLA=" + SIGLA + ", NOME=" + NOME + ", DISTRITO=" + DISTRITO + ", MUNICÍPIO="
                + MUNICÍPIO + ", BAIRRO=" + BAIRRO + ", ENDEREÇO=" + ENDEREÇO + ", COMPLEMENTO=" + COMPLEMENTO
                + ", CEP=" + CEP + ", LATITUDE=" + LATITUDE + ", LONGITUDE=" + LONGITUDE + ", ALTITUDE=" + ALTITUDE
                + ", ÁREA=" + ÁREA + ", TIPO_DE_CONTRATO=" + TIPO_DE_CONTRATO + ", PROPRIETÁRIO=" + PROPRIETÁRIO
                + ", ID_DETENTORA=" + ID_DETENTORA + ", SIGLA2=" + SIGLA2 + ", TIPO_DE_IMÓVEL=" + TIPO_DE_IMÓVEL
                + ", TIPO_DE_SITE=" + TIPO_DE_SITE + ", SOLICITAÇÃO_DE_ACESSO=" + SOLICITAÇÃO_DE_ACESSO + ", CHAVES="
                + CHAVES + ", ÁREA_OEM=" + ÁREA_OEM + ", CAMPO_TELEFÔNICA=" + CAMPO_TELEFÔNICA + ", EMAIL=" + EMAIL
                + ", CONTATO=" + CONTATO + ", OBSERVAÇÃO=" + OBSERVAÇÃO + ", EMPRESA_TERCEIRA_OEM="
                + EMPRESA_TERCEIRA_OEM + "]";
    }

}

Oi Renan,

Olhando o seu código identifiquei 2 problemas.

1) O seu método Busca na classe SiteDAO está com retorno void. Ele deve ficar assim:

public SITE Busca(SITE site) {
    return manager.find(SITE.class, site.getSIGLA());
}

2) O seu método Busca da classe SiteController tá faltando adicionar o objeto no ModelAndView. Ele deve ficar assim:

@RequestMapping("/Busca")
public ModelAndView Busca(SITE site) {
    SITE site = siteDao.Busca(site);

    ModelAndView modelAndView = new ModelAndView("/busca");
    modelAndView.addObject("site", site);

    return modelAndView;
}

opa Rodrigo blz, segui sua recomendação e aparente esta tudo certo, porem na hora de fazer a busca ele esta dando erro no foreach da jsp

ago 07, 2019 1:55:22 PM org.apache.catalina.core.ApplicationDispatcher invoke
GRAVE: Servlet.service() for servlet [jsp] threw exception
javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in <forEach>
    at org.apache.taglibs.standard.tag.common.core.ForEachSupport.toForEachIterator(ForEachSupport.java:308)
...

será que é por que não estou jogando em uma lista ?

solução!

Oi Rennan,

Ah sim, como é só um elemento que estamos enviando para a página, o forEach não funciona.

Você pode adicionar ele numa lista no controller então:

@RequestMapping("/Busca")
public ModelAndView Busca(SITE site) {
    SITE site = siteDao.Busca(site);

    ModelAndView modelAndView = new ModelAndView("/busca");
    modelAndView.addObject("site", Arrays.asList(site));

    return modelAndView;
}

perfeito funcionou =D muito obrigado

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software