【问题标题】:Howto get a random object from DB?如何从数据库中获取随机对象?
【发布时间】:2011-08-01 21:32:39
【问题描述】:

为了获得更多活力,我想在我的应用中添加一个随机部分。 以下是我在其他技术中会做的事情,以及不起作用的事情:

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

【问题讨论】:

标签: jpa random playframework


【解决方案1】:

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

jpa.dialect=org.hibernate.dialect.MySQLDialect

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 确实没有明确表示,但这是一个带有 playframework 标记的问题。玩!为了更简单,在 JPA/Hibernate 上添加了一层。而且我不认为 setMaxResults 可以通过他们的层获得。
    猜你喜欢
    • 2020-06-10
    • 1970-01-01
    • 2011-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多