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