usando hibernate Criterios.uniqueResult() cuando hay varios resultados

Tengo una tabla de USUARIOS con nombres y fechas de creación, y una función de la api

T read(Criterion... criteria)

que las búsquedas por criterios que no puedo cambiar.

Mi problema es que la función devuelve crit.uniqueResult() pero a veces los criterios da muchos nombres (en cuyo caso sólo quiero el nombre con la fecha más reciente).
¿cómo puedo agregar un criterio para asegurarse de que sólo el último se devuelve el nombre de?

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;
}
InformationsquelleAutor dov.amir | 2011-10-26

1 Kommentar

  1. 5

    Tal vez usted puede tener un método de lectura que devuelve el resultado superior, un método que devuelve un List<T> y uno que pase en el número de resultados a devolver.

    Por ejemplo, usted podría usar entonces máximo uso de los resultados de la configuración de

    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

    • No olvides addOrder().
    • Sí, pero los resultados deben ser ordenados por fecha (descendente)
    • necesito usar el infastructure leer(Criterio… los criterios de función , así que sólo puedo trabajar con criterios, no tengo acceso a los criterios de la función

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea