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

criando método find

estou tentando criar um método find na mão porem ele da erro de não estar passando a id correta

DAO

package br.com.bancoImpl.dao;

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);
        }

        public void buscar(SITE site) {
            manager.find(SITE.class, site);
        }
}

Controller

package br.com.bancoImpl.controller;

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

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";
        }
     @RequestMapping("/Busca")
     public String buscar(SITE site){

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

Model

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

Form Busca

<form action="/bancoImpl2/Busca" method="get">
        <div>
            <Label>Sigla</Label> <input type="text" name="SIGLA">
        </div>


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

erro

mai 25, 2019 12:52:31 AM org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet [dispatcher] in context with path [/bancoImpl2] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException: Provided id of the wrong type for class br.com.bancoImpl.model.SITE. Expected: class java.lang.String, got class java.lang.Class] with root cause
org.hibernate.TypeMismatchException: Provided id of the wrong type for class br.com.bancoImpl.model.SITE. Expected: class java.lang.String, got class java.lang.Class
2 respostas
solução!

arrumei adicionei

public void buscar(SITE site) {
            manager.find(SITE.class, site.getSIGLA);
        }

Boa tarde, Renan! Como vai?

Vc poderia compartilhar sua solução com o pessoal aqui do fórum? Assim, se mais pessoas tiverem um problema parecido com o seu no futuro, terão na sua resposta um caminho para a luz!

Obs.: A convenção da comunnidade Java diz que a nomenclatura de classes deve seguir o padrão camel case. Ou seja, começando sempre com letra maiúscula e a apenas usando maiúsculas novamente na primeira letra das palavras subsequentes à primeira! Sendo assim, bons nomes de classes seriam: PessoaFisica e PessoaJuridica.

Já a nomenclatura de atributos, métodos e variáveis segue basicamente a mesma ideia, com a diferença que a primeira letra em vez de maiúscula é sempre minúscula! Exemplos de bons nomes de atributos, métodos e variáveis: private String nome, private Calendar dataNascimento, getDataUltimaAtualizacao(), double valorDevido.

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

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