Criteria para um Object generico

7 respostas
R

Povo.
Bom dia.
Gostaria de uma ajuda para a seguinte consulta.

Preciso de uma consulta, onde eu passe um objeto ( qualquer) e a criteria me retorne ele.
segue um exemplo.

public List recupera(Object o) {

          Session session = HibernateUtil.getSessionFactory().openSession();

      
    //      aqui seria inserido o código para criar a list C com o retorno do object..
      


        
        
                return c.list();

meu codigo atual é este

public List recupera(Object o) {

          Session session = HibernateUtil.getSessionFactory().openSession();

     
       Query c = session.createQuery("from Cliente");


        
        
                return c.list();
        }

Mas obviamente eu estou retornando apenas o cliente, eu gostaria de passar uma instância de qualquer objeto para este método, pela obvia razão de não precisar criar um método de recuperação para cada objeto.

fico no aguardo
e obrigado

anderson.

7 Respostas

zoren

É só passar o class da classe q vc quiser para o criteria,

ai as restrictions, vc trata com varargs

R

Ah, obrigado pela ajuda.
poderia me descrever a criteria para esta opção?

Tentei alguns códigos aqui e não consegui fazer o retorno correto, não estou utilizando o método correto eu acho.

Fico no aguardo e obrigado.

zoren
Criteria c = session.createCriteria(MinhaClasse.class);

Ai é só fazer um for pra iterar as suas restrições

Jair_Rillo_Junior

https://www.hibernate.org/328.html

mrrbigu

Creio que a melhor solução é usar o modelo de GenericHibernateDao que o Jair indicou, sugiro que utilize o método findById, onde basta informar a classe e o Id do dado, mais simples que passar o objeto.

Jair_Rillo_Junior

Lembrando que isso é uma proposta de DAO genérico, não necessariamnte o seu DAO tem que ser EXATAMENTE igual esse.
O pessoal da Caelum no blog deles já postaram um DAO genérico similar mas com alguns detalhes diferentes.
Em outro projeto que eu trabalhei, usamos esse DAO como base, mas fizemos algumas pequenas modificações para encaixar melhor no que a gente precisava.

sergiotaborda

Roidanton:
Povo.
Bom dia.
Gostaria de uma ajuda para a seguinte consulta.

Preciso de uma consulta, onde eu passe um objeto ( qualquer) e a criteria me retorne ele.
segue um exemplo.

public List recupera(Object o) {

          Session session = HibernateUtil.getSessionFactory().openSession();

    //  aqui seria inserido o código para criar a list C com o retorno do object..
      
           return c.list();

Object é demasiado geral. Vc não está definindo que tipo de informação vem nesse objeto.
Pelo que entendi vc quer usar esse objeto como se fosse um template, mas para isso vc precisa sempre usar algum tipo de refelction
que identifique as propriedades do objeto e as passe para o criteria do hibernate.

Criado 27 de fevereiro de 2010
Ultima resposta 3 de mar. de 2010
Respostas 7
Participantes 5