当有几个结果时使用hibernate Criteria.uniqueResult()

时间:2011-10-26 11:12:42

标签: java database hibernate hibernate-criteria

我有一个包含名称和创建日期的表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;
}

1 个答案:

答案 0 :(得分:5)

也许你可以有一个返回顶部结果的read方法,一个返回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