Select order by random()查询在Java中不起作用

Select order by random()查询在Java中不起作用,java,mysql,Java,Mysql,我在我的存储库中使用一个查询,并尝试从表中随机选择10个问题。但是我得到了这个错误 应为ASC或DESC获取'(' 我不知道为什么 @Query ( value = "select q from Question q where q.chapitre_id=:id order by random() limit 10", nativeQuery = true) List<Question> findQuestionsByChapitre(@Param("id") Long id);

我在我的存储库中使用一个查询,并尝试从表中随机选择10个问题。但是我得到了这个错误 应为ASC或DESC获取'(' 我不知道为什么

@Query ( value = "select q from Question q where q.chapitre_id=:id order by 
random() limit 10", nativeQuery = true)
List<Question> findQuestionsByChapitre(@Param("id") Long id);
@Query(value=“从问题q中选择q,其中q.chapitre\u id=:id order by
random()限制10“,nativeQuery=true)
列出findQuestionsByChapitre(@Param(“id”)长id);

首先,按1、2、3或任何数字排序意味着按相应位置的列排序;如果您只选择一列(
q
,在您的情况下),您将只能按该列排序(但在较旧的版本中可能会起作用)


然后,按随机值排序的正确语法是
orderbyrand()

首先,按1、2、3或任何数字排序意味着按相应位置的列排序;如果您只选择一列(
q
,在您的情况下),您将只能按该列排序(但在旧版本中可能会起作用)


然后,按随机值排序的正确语法是
orderbyrand()

    @Query ( value = "select * from  question q where q.chapitre_id=:id order 
    by rand() limit 10", nativeQuery = true)
    Question[] findQuestionsByChapitre(@Param("id") Long id);

这就是我的工作原理:

    @Query ( value = "select * from  question q where q.chapitre_id=:id order 
    by rand() limit 10", nativeQuery = true)
    Question[] findQuestionsByChapitre(@Param("id") Long id);

请尝试rand()而不是random(),这两种方法都不起作用。您不应该在这里使用
limit 10
,因为像
Oracle
这样的数据库很少支持rand()。我建议您尝试使用
Page
Pageable
interfacesTry()而不是random()这不起作用。你不应该在这里使用
limit 10
,因为像
Oracle
这样的数据库不支持很多支持。我建议你尝试使用
Page
Pageable
接口