Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用ejbql从数据库中选择随机行_Java_Select_Jpa_Random_Ejbql - Fatal编程技术网

Java 使用ejbql从数据库中选择随机行

Java 使用ejbql从数据库中选择随机行,java,select,jpa,random,ejbql,Java,Select,Jpa,Random,Ejbql,我正在开发一个用于房地产广告的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");

我正在开发一个用于房地产广告的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();
当我写一个数字而不是:random参数时,它似乎起作用了,但有一个例外。我试图用NativeQuery解决这个问题

Query q = em.createNativeQuery("SELECT * FROM RealEstate ORDER BY RANDOM()");
List<RealEstate> resL = q.getResultList();
Query q=em.createNativeQuery(“通过随机()从房地产订单中选择*”;
List resL=q.getResultList();
但当我试图在网页上显示广告时,字段出现了问题。我猜是因为结果列表中有对象而不是不动产。我使用联接类型继承,我不知道它是否会干扰nativequery的使用,但我更喜欢使用EJBQL查询。我愿意接受任何想法


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

我认为您几乎解决了自己的问题

我将检索记录的编号

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();

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

我将检索记录的编号

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 ()  
感谢JavatpointNice教程


对于随机数据,我会这样做

SELECT column FROM table  
ORDER BY RAND ()  
感谢JavatpointNice教程


第一个查询返回了一个Long,它抛出了一个异常,表示无法将其转换为整数,因此我再次尝试使用nativequery,但像您一样给出了预期结果的类,并添加了setMaxResult,效果很好,谢谢。第一个查询返回了一个Long,它抛出了一个异常,说它不能转换为整数,所以我再次尝试使用nativequery,但像您一样给出了预期结果的类,并添加了setMaxResult,效果很好,谢谢。