如何从DB获取随机对象?

时间:2011-08-01 21:32:40

标签: jpa random playframework

为了获得更多动力,我想在我的应用中添加随机部分。 以下是我在其他技术方面所做的工作,以及在游戏中无效的方法:

long id = JPA.execute("select id from Realisation r order by RANDOM() LIMIT 1");

这是堆栈:

unexpected token: LIMIT near line 1, column 55

评论:

  • 在应用程序或数据库中,对我没有任何影响。
  • 数据库中大约有一百个“实现”。
  • 我只需要ID,不需要完整的对象。
  • MySQL数据库背后的一切。

修改

经过一番调查后,我就是这样做的:

  • 在application.conf中定义jpa.dialect:jpa.dialect=org.hibernate.dialect.MySQLDialect
  • 使用经典模型实用程序获取完整对象而不是id:

Realisation r = Realisation.find("order by RAND()").first();

2 个答案:

答案 0 :(得分:2)

经过一番调查后,我就是这样做的。在application.conf中定义jpa.dialect:

jpa.dialect=org.hibernate.dialect.MySQLDialect

使用经典模型实用程序获取完整对象而不是id:

Realisation r = Realisation.find("order by RAND()").first();

不是最好的方法,因为我只需要ID而不是完整的对象。无论如何,我没有其他解决方案。如果有人只有一个ID我将采取它。

答案 1 :(得分:1)

JPQL中没有“limit”子句,你需要的是分页。如果这是一个JPQL查询,你可以使用Query.setMaxResults,这在帖子中并不完全清楚。