08-10
07

java.lang.IllegalArgumentException:   n   must   be   positive  

public List getMaxRsRandArticle(String hql, int num) {
    List list = new ArrayList();

    Transaction tx = null;
    Session session = HibernateUtil.getSession();
    try {
        tx = session.beginTransaction();
        Query query = session.createQuery(hql);
            log.info("随机HQL:"+hql);
        int size = query.list().size();
        Random r = new Random();
        query.setMaxResults(10);
       // query.setFirstResult(r.nextInt(size - 10) + 1);
                   query.setFirstResult(r.nextInt(Math.abs(size - 10)) + 1);
        list = (List) query.setMaxResults(num).list();
        tx.commit();
    } catch (HibernateException ex) {
        ex.printStackTrace();
        if (tx != null)
        HibernateUtil.rollbackTransaction(tx);
    } finally {
        if (session != null) {
        HibernateUtil.closeSession(session);
        }
    }
    return list;
    }


*红色的注明,当list取值为空,size为0,那么就会为负数。解决办法,使用绝对值


[本日志由 blurxx 于 2008-10-07 04:29 PM 编辑]
文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: positive 绝对值
相关日志:
评论: 0 | 引用: 0 | 查看次数: 1354
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭