查询Hibernate或HQL不返回结果

时间:2016-08-21 12:32:53

标签: java hibernate hql

我正在尝试以两种方式通过id进行查询,但是,不会返回resutlado。我的代码有什么问题吗?我用两种方式制作:

public Laudo buscarLaudoPorCodigo(Long idLaudo) {
    Session sessao = HibernateUtil.getSessionFactory().openSession();
    try {
        System.out.println(idLaudo);
        Criteria consulta = this.session.createCriteria(Laudo.class);
        consulta.add(Restrictions.idEq(idLaudo));
        Laudo resultado = (Laudo) consulta.uniqueResult();
        System.out.println(resultado);
        System.out.println(idLaudo);
        return resultado;
    } catch (RuntimeException erro) {
        throw erro;
    } finally {
        sessao.close();
    }
}

第二种方式:

public Laudo teste2(Long idLaudo) {
    System.out.println("veio da visao "+idLaudo);
    String hql = "select l from Laudo l where l.id_laudo = :idLaudo";
    Query consulta = this.session.createQuery(hql);
    consulta.setLong("id_laudo", idLaudo);
    System.out.println("veio do bd "+consulta);
    return (Laudo) consulta.uniqueResult();
}

我的豆子:

public void buscarLaudoPorCodigo() {
    try {
        LaudoDAOHibernate laudoDAOHibernate = new LaudoDAOHibernate();
        Laudo resultado = laudoDAOHibernate.buscarLaudoPorCodigo(laudo.getIdLaudo());
        if (resultado == null) {
            System.out.println("laudo nao encontrado");
        } else {
            laudo = resultado;
        }
    } catch (RuntimeException erro) {
    }
}

这两个查询,都是Hibernate,因为在hql中没有返回id

1 个答案:

答案 0 :(得分:0)

我设法使用与以前一样的搜索方法的同一会话来解决使用Session类的问题。正确的代码如下所示:

public Laudo buscarLaudoPorCodigo(Long idLaudo) {
    Session sessao = HibernateUtil.getSessionFactory().openSession();
    try {
        Criteria consulta = sessao.createCriteria(Laudo.class);
        consulta.add(Restrictions.idEq(idLaudo));
        Laudo resultado = (Laudo) consulta.uniqueResult();  
        return resultado;
    } catch (RuntimeException erro) {
        throw erro;
    } finally {
        sessao.close();
    }
}