Hibernate não executa a consulta

2 respostas
pauloperes

Srs,

Preciso realizar a consulta de um objeto atraves de sua chave primaria, porem no meu método que chama o método de consulta não é executado, veja minha interface Dao:

public interface Dao<T> {

    public void persist(T t);
    public void update(T t);
    public void remove(T t);
    public T search(Serializable id);
    public List<T> listAll();
    public List<T> findByExample(T example);
    public List<T> findByCriteria(Criterion... criterions);
}

Classe que implementa o Dao

public class DaoHibernate<T> implements Dao<T> {

    private Session session;
    private Class persistentClass;

    public DaoHibernate(Session session, Class persistentClass) {
        this.session = session;
        this.persistentClass = persistentClass;
    }

    public Class getPersistentClass() {
        return persistentClass;
    }

    public void setPersistentClass(Class persistentClass) {
        this.persistentClass = persistentClass;
    }

    public Session getSession() {
        return session;
    }

    public void setSession(Session session) {
        this.session = session;
    }

    public void persist(T t) {
        getSession().save(t);
    }

    public void remove(T t) {
        getSession().delete(t);
    }

    public T search(Serializable id) {
        return (T) getSession().load(persistentClass, id);
    }

    public List<T> listAll() {
        return getSession().createCriteria(persistentClass).list();
    }

    public void update(T t) {
        getSession().update(t);
    }

    public List<T> findByExample(T example) {
        Criteria crit = getSession().createCriteria(persistentClass);
        Example ex = Example.create(example);
        crit.add(ex);
        return crit.list();
    }

    public List<T> findByCriteria(Criterion... criterions){
        Criteria crit = getSession().createCriteria(persistentClass);
        for(Criterion c : criterions){
            crit.add(c);
        }
        return crit.list();
    }
}

E agora dentro da minha aplicação chamando o método search

private void btnSearchActionPerformed(java.awt.event.ActionEvent evt) {                                          
        if (fieldPtw.getText().equals("")) {
            JOptionPane.showMessageDialog(null, "PTW ou NGEM não informado", "Mensagem do sistema", JOptionPane.ERROR_MESSAGE);
        } else {                        
            this.ativity = daoAtitivy.search(1);
        }
}

O mais interessante é que seu eu chamar por exemplo o método listAll o mesmo é chamado normalmente.

Alguém já teve algum problema deste tipo?

Att,

Paulo

2 Respostas

moacirjava

pauloperes:
Srs,

public interface Dao<T> {

    public void persist(T t);
    public void update(T t);
    public void remove(T t);
    public T search(Serializable id);
    public List<T> listAll();
    public List<T> findByExample(T example);
    public List<T> findByCriteria(Criterion... criterions);
}

Esse seu método de pesquisa aceitando como parâmetro um tipo Serializable eu achei estranho… nunca vi isso…
Eu por exemplo uso no lugar de

public T search(Serializable id) {  
         return (T) getSession().load(persistentClass, id);  
     }

usaria:

public T search(Integer id) {  
       T t = (T) suaSessao.get(T.class, id);
        return t;

     }
Z111

Há algum motivo para vc usar um Serializable como id?

Criado 6 de abril de 2009
Ultima resposta 6 de abr. de 2009
Respostas 2
Participantes 3