Problemas com o findByExample do Hibernate

Boa tarde Galera…
To com um probleminha… andei estudando o Hibernate, e nos tutoriais que eu li existia um método findByExample, onde eu supostamente passaria um Obejto como parâmetro e ele faria uma consulta no meu BD em cima dos campos preenchidos do Obejto…

No meu código então eu passaria um entidade e um string falando o tipo desta entidade…

O meu objeto entidade é do tipo
Pessoa, e contem os seguintes atributos:

-int idade
-int CPF

  • Nacionalidade nacionalidade
  • Idioma idioma

Onde nas minha classes Nacionalidade e Idioma… eu tenho outros atributos, como “int id”…

O que eu faço é criar um Objeto Pessoa, Nacionalidade e Idioma e depois defino o campo id de Nacionalidade com 1, o campo id de Idioma com 1 e seto esses dois objetos no meu objeto Pessoa e mando para o meu findByExample… So que ele não faz a busca com as opções definidas dentro do Objeto, mas se eu definir a “idade” e o “CPF”… ele faz a busca certinha!..

Alguém sabe me dizer pq ele não faz a consulta utilizando essas informações como parâmetro???


	public List findByExample(Entidade entidade, String tabela) {
		try {
			abreSessao();
			List results = session.createCriteria(entidade.getClass(),tabela).add(Example.create(entidade)).list();
			fechaSessao();
			return results;
		} catch (RuntimeException re) {
			System.out.println(re.toString());
			throw re;
		}
	}

Onde tenho


    private HibernateUtil  h;

    private SessionFactory factory;

    private Transaction    tx;

    private Session        session;

    public void abreSessao() {

        factory = h.getSessionFactory();
        session = factory.openSession();
        tx = session.beginTransaction();

    }

    public void fechaSessao() {

        // session.flush();
        tx.commit();
        session.close();

    }

E a classe HibernateUtil:



package br.com.brt.correspondencia.dao.hibernate;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class HibernateUtil {

    private static final SessionFactory sessionFactory;

    static {
        try {
            sessionFactory = new Configuration().configure("/br/com/brt/correspondencia/dao/hibernate/hibernate.cfg.xml").buildSessionFactory();
        } catch (Throwable ex) {
            System.err.println("Falha no SessionFactory" + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }


    public static SessionFactory getSessionFactory() {
        return sessionFactory;
    }
}

Tirando o parametro tabela do createCriteria pode funcionar.

Vc esta fazendo de forma correta.

[]'s

Acabei de testar desta maneira… deu o mesmo resultado… (não funcionou)

Tentei agora pesquisar com o Objeto vazio, com apenas os parâmetros do objeto que está dentro setado, e tb não funcionou… ele me retornou uma lista vazia!..

Muito estranho… quando eu tento usar a base da pesquisa um parâmetro do “sub-objeto” ele não acha…

e Um parâmetro “comum” funciona direitim!..