Pesquisar objetos cadastrados no banco usando hibernate

4 respostas
R

Boa Tarde Pessoal,

Estou com dúvidas de como fazer pesquisa no banco de dados ultilizando hibernate.

Tenho uma página que contem <h:inputText> Nome: para usuario digitar o nome a ser pesquisado e buttom “Pesquisar”, após o usuario digitar o nome e clicar no buttom eu fiz uma Panel pesquisar para listar o nome pesquisado, O que usar para realizar essa consulta no Banco? E aonde acrescento esse código para realizar a pesquisa? (no managerBean, na DAO, GenericDAO ou criar um pacote com classes de pesquisa).

4 Respostas

lazaropj

Velho…

OLha isso aqui…

http://www.guj.com.br/posts/list/41534.java

Me ajudou e pod te ajudar.

R

Lazaropj se for possivel da uma olhada nesse código que eu fiz e o erro que esta dando por favor:

public abstract class GenericDAO {
     private static final long serialVersionUID = 1L;
    
    protected Session getSession() {
        return HibernateUtil.getInstance().getSession();
    }

    protected void saveOrUpadatePojo(Serializable pojo) {
        Session ses = getSession();     
        ses.saveOrUpdate(pojo);
        ses.beginTransaction().commit();
        ses.close();

    }

    protected <T extends Serializable> T getPojo(Class<T> classToSearch, Serializable key) {
        Session ses = getSession();
        Serializable toReturn = (Serializable) ses.get(classToSearch, key);
        ses.beginTransaction().commit();
        ses.close();
        return (T) toReturn;
    }

    protected void removePojo(Serializable pojoToRemote) {
        Session ses = getSession();
        ses.delete(pojoToRemote);
        ses.beginTransaction().commit();
        
        ses.close();
    }

    protected Serializable getPurePojo(String query, Object... params) {
        Session ses = getSession();
        Query qr = ses.createQuery(query);
        for (int i = 1; i <= params.length; i++) {
            qr.setParameter(1,params[i-1]);
        }

        Object toReturn = qr.uniqueResult();
        ses.beginTransaction().commit();
        ses.close();
        return (Serializable)toReturn;
    }

    protected <T extends Serializable> List<T> getPureList(Class<T> classToCast, String query, Object... params) {
        Session ses = getSession();
        Query qr = ses.createQuery(query);
        for (int i = 1; i <= params.length; i++) {
            qr.setParameter(1, params[i - 1]);
        }
        @SuppressWarnings("unchecked")
        List<T> toReturn = qr.list();
        ses.beginTransaction().commit();
        ses.close();
        return toReturn;
    }
       
}
Código DAO
public class CadSecretariaDAO extends GenericDAO {

    private static final long serialVersionUID = 1L;
    private Session session;

    public CadSecretariaDAO(Session session) {
        this.session = session;
    }

    public CadSecretariaDAO() {
        this.session = getSession();
    }

    public int addCadastrarSecretaria(CadastrarSecretaria cad) {
        saveOrUpadatePojo(cad);
        return cad.getCodigosecretaria();

    }

    public void removeCadastrarSecretaria(CadastrarSecretaria cad) {
        removePojo(cad);
    }

    public void upadateCadastrarSecretaria(CadastrarSecretaria cad) {
        saveOrUpadatePojo(cad);
    }

    public CadastrarSecretaria getCadastrarSecretaria(Integer codigosecretaria) {
        CadastrarSecretaria cad = getPojo(CadastrarSecretaria.class, codigosecretaria);
        return cad;

    }

    public CadastrarSecretaria getCadastrarSecretaria(String nome) {
        CadastrarSecretaria cad = getPojo(CadastrarSecretaria.class, nome);
        return cad;

    }
    public boolean pesquisarNome (String nome){
        return getPurePojo("from CadastrarSecretaria cadase where cadase.nome = ?",nome)!= null;
     }
   
    public List<CadastrarSecretaria> getCadSecretarias() {
        return getPureList(CadastrarSecretaria.class, "from CadastrarSecretaria cad");
    }
}
ManagerBean
public class Secretaria {

    private List<CadastrarSecretaria> cachedCadSecretarias = null;
    private CadSecretariaDAO cad = new CadSecretariaDAO();
    private CadastrarSecretaria selectedSecretaria;


    public List<CadastrarSecretaria> getCachedCadSecretaria() {
        if (cachedCadSecretarias == null) {
            cachedCadSecretarias = cad.getCadSecretarias();
        }

        return cachedCadSecretarias;
    }

    public String doConfirmaCadSecretaria() {
        selectedSecretaria = new CadastrarSecretaria();
        return "telaconsulta";
    }

    public String finishConfirmaCadSecretaria() {
        cad.addCadastrarSecretaria(selectedSecretaria);
        cachedCadSecretarias = null;
        selectedSecretaria = new CadastrarSecretaria();
        return "ListCadSecretaria";
    }

    public CadastrarSecretaria getSelectedSecretaria() {
        return selectedSecretaria;
    }

    public void setSelectedSecretaria(CadastrarSecretaria selectedSecretaria) {
        this.selectedSecretaria = selectedSecretaria;
    }

    public String pesquisa(){
        cad.pesquisarNome("nome");
        return "invalido";
    }
}

Após clicar no Buttom "Pesquisar" da esse erro Remember that ordinal parameters are 1-based!

at secretaria.dao.GenericDAO.getPurePojo(GenericDAO.java:45)
at secretaria.dao.CadSecretariaDAO.pesquisarNome(CadSecretariaDAO.java:48)
at secretaria.faces.Secretaria.pesquisa(Secretaria.java:45)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:623)
at org.apache.el.parser.AstValue.invoke(AstValue.java:191)
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
at com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:68)
at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:77)
... 29 more
19/05/2010 18:40:01 com.sun.faces.lifecycle.InvokeApplicationPhase execute
WARNING: #{Secretaria.pesquisa}: java.lang.IndexOutOfBoundsException: Remember that ordinal parameters are 1-based!
javax.faces.FacesException: #{Secretaria.pesquisa}: java.lang.IndexOutOfBoundsException: Remember that ordinal parameters are 1-based!
at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:107)
at javax.faces.component.UICommand.broadcast(UICommand.java:383)
at org.ajax4jsf.component.AjaxActionComponent.broadcast(AjaxActionComponent.java:55)
at org.ajax4jsf.component.AjaxViewRoot.processEvents(AjaxViewRoot.java:324)

tenclar

teve alguma solição ?

ricktg

Quais são todos os parametros do metodo getPurePojo(…?

Criado 19 de maio de 2010
Ultima resposta 18 de jul. de 2011
Respostas 4
Participantes 4