Właściwie jest to możliwe dzięki Kryteriom i odrobinie poprawek. Oto jak:
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();
każde Restrictions.sqlRestriction doda słowo kluczowe „i”; więc aby zniwelować jego efekt, dodamy warunek fikcyjny i wstrzykniemy naszą funkcję rand().