【问题标题】:using hibernate Criteria.uniqueResult() when there are several results当有多个结果时使用休眠 Criteria.uniqueResult()
【发布时间】:2011-12-15 15:41:40
【问题描述】:

我有一个包含名称和创建日期的表 USERS,以及一个 api 函数

T read(Criterion... criteria)

按我无法更改的标准进行搜索。

我的问题是该函数返回 crit.uniqueResult() 但有时条件会给出许多名称(在这种情况下,我只想要具有最新日期的名称)。 如何添加标准以确保仅返回最新名称?

public T read(Criterion... criteria){
  Criteria crit = getSession(false).createCriteria(this.type);
  for (Criterion c : criteria) 
  {
    crit.add(c);
  }
  T entity = (T)crit.uniqueResult();
  return entity;
}

【问题讨论】:

    标签: java database hibernate hibernate-criteria


    【解决方案1】:

    也许您可以有一个返回顶部结果的读取方法,一个返回List<T> 的方法,以及一个您传递要返回的结果数量的方法。

    例如,您可以使用然后使用最大结果设置

    criteria.setMaxResults(1);
    List<T> results = criteria.list();
    return results.get(0);
    

    http://docs.jboss.org/hibernate/core/3.2/api/org/hibernate/Criteria.html#setMaxResults%28int%29

    【讨论】:

    • 是的,但结果需要按日期排序(降序)
    • 我需要使用基础结构读取(Criterion...criteria)函数,所以我只能使用标准,我无法访问函数中的标准
    猜你喜欢
    • 1970-01-01
    • 2018-07-22
    • 1970-01-01
    • 2012-09-06
    • 2011-08-16
    • 2016-08-15
    • 2013-08-13
    • 2020-01-01
    相关资源
    最近更新 更多