查询 Hibernate 或 HQL 不是 return 结果

Query Hibernate or HQL not return result

我正在尝试通过两种方式通过 id 进行查询,但是,结果未 returned。我的代码有什么问题吗?我用两种方式制作:

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,as in hql 不是returnid

我设法使用相同的会话搜索方法解决了问题,就像以前一样,使用的是会话 class。正确的代码如下所示:

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