不返回表中的任何行

时间:2014-05-17 06:11:29

标签: hibernate

我从数据库中获取数据表中有6行,但它没有在程序中显示任何输出。可能是我的代码在下面的问题。 它在控制台中没有显示任何错误。

public class smsDAO {

Session session = HibernateUtil.getSessionFactory().openSession();
public List<SmsGateway> fetchAll() {
        System.out.println("Calling fetchA b");
        Transaction tx = session.beginTransaction();
        List<SmsGateway> sms = null;
        try {
            sms = session.createQuery("FROM sms_gateway").list();
            tx.commit();
            for (SmsGateway s : sms) {
                System.out.println(s.getDescription() + " " + s.getUrl1());
            }
        } catch (HibernateException e) {
            if (tx != null) {
                tx.rollback();
            }
        } finally {
            session.close();
        }
        System.out.println("Calling fetchA re  ");
        return sms;
    }
}

1 个答案:

答案 0 :(得分:0)

控制台没有发现任何错误,因为您故意选择忽略抛出的异常。替换

    catch (HibernateException e) {
        if (tx != null) {
            tx.rollback();
        }
    }

通过

    catch (HibernateException e) {
        e.printStackTrace();
        if (tx != null) {
            tx.rollback();
        }
        throw e;
    }

并在文档中重新阅读有关HQL的章节。 HQL始终使用实体名称及其映射字段。它从不使用表名。所以查询应该是

select s from SmsGateway s

此外,尊重Java命名约定:类以大写字母开头。