使用EJB QL从数据库中选择随机行



我正在开发一个用于广告真实庄园的Web应用程序。在搜索页面上,我想显示一些随机的广告,但是到目前为止,我还没有从数据库中选择随机记录的成功。这在控制台中起作用,但我真的无法将其放入EJB QL中:

SELECT * FROM RealEstate ORDER BY RANDOM()

我尝试的是:

Random random = new Random();
Query q = em.createQuery("SELECT r FROM RealEstate r ORDER BY :random");
q.setParameter("random", random.nextInt());
return q.getResultList();

当我编写一个数字而不是:随机参数时,它似乎有效,但是我得到了一个例外。我试图用本地Query

解决问题
Query q = em.createNativeQuery("SELECT * FROM RealEstate ORDER BY RANDOM()");
List<RealEstate> resL = q.getResultList();

但是,当我尝试在网页上显示广告时,这些字段存在问题。我猜是因为结果列表中有没有真实的对象。我使用连接的类型继承,我不知道它是否会干扰使用本机Query,但我更喜欢使用EJB QL查询。我对任何想法都开放。

注意:我知道我仅选择所有记录的顺序不同,限制结果集将是下一步。

我想您几乎解决了自己的问题。

我会检索记录的数量

Integer singleResult = em.createQuery("SELECT count(r) FROM RealEstate r", Integer.class).getSingleResult();

然后,我将创建一个随机数,最后

    Random random = new Random();
        RealEstate RealEstate = em.createQuery("SELECT r FROM RealEstate r", RealEstate.class)
            .setFirstResult(random.nextInt(size))
            .setMaxResults(1) 
            .getSingleResult();

我会为随机数据

做这样的事情
SELECT column FROM table  
ORDER BY RAND ()  

感谢Javatpoint Nice Tutorial

javatpoint在这里查看

最新更新