from subject where levels = xxx and field_by_code = xxx and s.field_by_project = xxx ORDER BY rand()
大致这么写。
分页的话用Query接口的setFirstResult(int start)方法和setMaxResults(int end)方法,不建议手写使用limit,因为limit不是所有数据库都支持。使用上述两个方法设置起止点的话hibernate会根据配置中的数据库方言来转换为适合此数据库的分页部分sql。