【问题标题】:Get multiple random rows with Hibernate Criteria使用 Hibernate Criteria 获取多个随机行
【发布时间】:2012-05-07 07:35:01
【问题描述】:
Criteria crit=getSession().createCriteria(Student.class);
crit.add(Restrictions.not(Restrictions.like("studentName", "John" )));  
int count=crit.list().size();
int index=new Random().nextInt(count);
crit.setFirstResult(index).setMaxResults(3); 

此代码仅返回第一个随机结果和接下来的三个连续行(非随机)。我想获得 3 个随机行。

【问题讨论】:

    标签: java hibernate hibernate-criteria


    【解决方案1】:

    我认为最好的解决方案是为 Student 实体定义一个自动递增的数字 ID,然后随机获取 3 个值(在最低 ID 和最大 ID 之间),以便您可以使用以下标准:

    Restrictions.in("id", {randomVal1, randomVal2, randomVal3})
    

    【讨论】:

    • 感谢您的评论,我认为最好使用 hql 并使用 order by rand()
    猜你喜欢
    • 2011-02-18
    • 1970-01-01
    • 2017-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-14
    • 2011-11-08
    相关资源
    最近更新 更多