【问题标题】:getting first row of table by criteria query通过条件查询获取表的第一行
【发布时间】:2013-07-23 10:23:39
【问题描述】:

如何使用criteriaHQL 查询获取表的第一行?

表创建脚本

   CREATE TABLE MonthlySubscriber(MSISDN bigint(20) 
   NOT NULL, MonthOfYear int(11) NOT NULL, 
   PRIMARY KEY (MSISDN)); 

【问题讨论】:

  • 接受答案并帮助人们信任所提供的解决方案。

标签: hibernate hql hibernate-criteria


【解决方案1】:

是的,您可以在标准中使用 setMaxResultssetFirstResult 来做到这一点

示例代码

Criteria queryCriteria = session.createCriteria(MonthlySubscriber.class);
queryCriteria.setFirstResult(0);
queryCriteria.setMaxResults(1);
monthlySubscriberList = queryCriteria .list();

【讨论】:

  • 为什么是 .setFirstResult(0) ?
  • @MarkW setFirstResult 用于设置从列表中获取结果的起点。在这种情况下,我们需要列表第一个元素的结果。
【解决方案2】:

你可以这样做:

Session session = getHibernateTemplate().getSessionFactory().getCurrentSession();
        String sql= "select b.wcd, a.optime from UseWaterRecord a, WellBasicInfo b where a.stcd=:a_stcd and b.stcd=:b_stcd ORDER BY a.optime desc";
        Query query = session.createQuery(sql);
        query.setString("a_stcd", "10100405");
        query.setString("b_stcd", "10100405");
        query.setFirstResult(0);
        query.setMaxResults(1);

        List wrwmList = query.list();

【讨论】:

  • 这不是通过条件查询
【解决方案3】:
 Criteria queryCriteria = currentSession.createCriteria(Project.class);
 queryCriteria.setFirstResult(0);
 queryCriteria.setMaxResults(1);
 entity = (Project) queryCriteria.uniqueResult(); // Casting to the Entity class

【讨论】:

    【解决方案4】:
    public Criteria setFirstResult(int firstResult)
    

    此方法采用一个整数,表示结果集中的第一行,从第 0 行开始。REFER

    【讨论】:

    • setFirstResult 用于获取起始行,但它提供了低于该行的所有行。为此必须使用setMaxResults
    • @JubinPatel 不是 setFirstResult 明确与 setMaxResults 结合使用吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-21
    相关资源
    最近更新 更多