использование hibernate Criteria.uniqueResult (), когда есть несколько результатов - PullRequest
2 голосов
/ 26 октября 2011

У меня есть таблица USERS с именами и датами создания, а также функция API

T read(Criterion... criteria)

, которая ищет по критериям, которые я не могу изменить.

Моя проблема в том, что функция возвращает критическое значение.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 Ответ

5 голосов
/ 26 октября 2011

Возможно, у вас может быть метод 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...