Consultar os "N" objetos mais recentes

Alguem poderia indicar um caminho de como poderia ser feito uma consulta que retorna as “N” tuplas mais recentes?
o usuario deve fornecer o “N”…

to usando hibernate…

enquanto isso, vou pesquisando

obrigado

eu poderia fazer com bacalhau…

public List<ObjectQualquer> findByDate(Date date, int n) {
			List<ObjectQualquer> a = getHibernateTemplate()
					.find("from ObjectQualquer n where trunc(n.date) = trunc(?) order by n.date desc",date);

                       // e depois eu fazia um for com o parametro "n" 
		
	}

mas procuro outra forma de fazer… queria ir no banco e trazer so os “n” elementos… e não todo mundo pra depois pegar os “n”…

tem uma clausula sql “limit” que serve pra isso…
mas nao sei se existe em todos os bancos…

khichfy,

Você pode utilizar Criteria para fazer isso:

Criteria criteria = session.createCriteria(SuaClasse.class).addOrder(Order.desc("DATA"));
criteria = filter.execute(criteria);
criteria = sort.execute(criteria);
criteria.setFirstResult(rowStart);
criteria.setMaxResults(rowEnd);
return criteria.list();

Abraço.

Bacana… eu tava vendo o Criteria, mas estava longe de ver uma solução…
pois estava tentando entender uns metodos como

public static Criterion sizeEq(String propertyName,int size)

public static Criterion sizeNe(String propertyName,int size)

quando vi sua dica, tentei e estou tentando coloca-la para funcionar…

mas quem é filter e sort… ?
de onde eles vem ? :shock: :oops:

valeu

na verdade minha classe que contem o metodo resposalvel para realizar a consulta extend de HibernateDaoSupport que por sua vez extends de org.springframework.dao.support.DaoSuppor

então seguindo o padrão do projeto aqui eu uso DetachedCriteria e não Criteria…

public class HibernateNewsDAO extends HibernateDaoSupport implements NewsDAO {
.
.
.
public List<News> findRecents(int n) {
		DetachedCriteria criteria = DetachedCriteria.forClass(News.class).addOrder(Order.desc("DATA"));;
		criteria = filter.execute(criteria);
		criteria = sort.execute(criteria);  
		criteria.setFirstResult(rowStart);  
		criteria.setMaxResults(rowEnd);  
		return criteria.list();  
}
.
.
.
}

agora estou tentando entender quem é filter e sort…