Hibernate Criteria API: get n random rows

前端 未结 5 1810
被撕碎了的回忆
被撕碎了的回忆 2020-12-03 11:06

I can\'t figure out how to fetch n random rows from a criteria instance:

Criteria criteria = session.createCriteria(Table.class);
criteria.add(Restrictions.e         


        
5条回答
  •  感动是毒
    2020-12-03 11:25

    Actually it is possible with Criteria and a little bit of tweaking. Here is how:

    Criteria criteria = session.createCriteria(Table.class);
    criteria.add(Restrictions.eq("fieldVariable", anyValue));
    criteria.add(Restrictions.sqlRestriction("1=1 order by rand()"));
    criteria.setMaxResults(5);
    return criteria.list();
    

    any Restrictions.sqlRestriction will add keyword 'and'; so to nullify its effect, we shall add a dummy condition and inject our rand() function.

提交回复
热议问题