当前位置: 首页 > 知识库问答 >
问题:

JPA查询错误,因为它有一个子查询-我不明白为什么

酆光熙
2023-03-14

我有这样的疑问:

public List<Participant> getTop4ScoresFromAStage(EtapaEntity etapaEntity) {
        TypedQuery<Participant> query = connection
                .getEntityManager()
                .createQuery("SELECT a FROM Participant as a WHERE a.punctaj >=" +
                        "(SELECT DISTINCT a.punctaj FROM a ORDER BY a.punctaj DESC LIMIT 1 OFFSET 3)" +
                        "WHERE a.etapaEntity = :etapaEntity ORDER BY a.punctaj DESC", Participant.class)
                .setParameter("etapaEntity", etapaEntity);
        return query.getResultList();
    }

第一个ORDER BY子句有个错误。

错误是:

')', ',', <join>, AS, GROUP, HAVING, IN or WHERE expected, got 'ORDER'

我不明白为什么。这个查询在Postgres中运行良好。

有人能帮我理解为什么会出现这个错误,以及如何修复它吗?

谢谢

//edit:我是这样尝试我的代码的(在KebabArchitmer的建议下)

public List<Participant> getTop4ScoresFromAStage(EtapaEntity etapaEntity) {
        TypedQuery<Participant> query = connection
                .getEntityManager()
                .createQuery("SELECT a FROM Participant as a WHERE a.punctaj >=" +
                        "(SELECT DISTINCT b.punctaj FROM Participant as b ORDER BY b.punctaj DESC LIMIT 1 OFFSET 3)" +
                        "WHERE a.etapaEntity = :etapaEntity ORDER BY a.punctaj DESC", Participant.class)
                .setParameter("etapaEntity", etapaEntity);
        return query.getResultList();
    }

我也犯了同样的错误。

共有1个答案

袁轶
2023-03-14

我认为您在第一行使用了两次WHEREa.punctaj,在第三行使用了WHEREa.etapaEntity。其次,应根据具体情况用ANDOR替换

 类似资料:
  • 需要更新和记录数据,获取此错误 如何在表中插入所有“upt”行?一定看起来像 对于每个订单,必须使用相同的orderid从“upt”列创建jsonb

  • 问题内容: 我有这个查询: 内部查询运行得非常快(不到0.1秒),以获取两个ID,一个ID表示状态1,一个ID表示状态2,然后它根据主键进行选择,以便对其进行索引。说明查询说,它仅使用where搜索135k行,我一生都无法弄清楚为什么这么慢。 问题答案:

  • 我不确定这是否是一个错误,但我遇到了一些主要的性能问题。EF Core正在为一个简单的语句生成多个查询。 这是查询: 预期结果: 然而,EF正在生成: UPDATE用EF core 2.1.0-preview2-Final测试过还是一样的问题

  • 问题内容: 我创建了两个实体并且具有一对多关系。当我发出时,我希望hibernate状态使用“ INNER JOIN”查询。但是它只是发出查询以从Book_Category获取数据。 我缺少什么?我该怎么做使hibernate问题的JOIN查询? Book.java BookCategory.java BookCategoryRepository.java 问题答案: 默认情况下,Hibernat

  • 我创建了两个具有一对多关系的实体和。当我发布,我希望hibernate使用“内部联接”查询。但它只是发出了从Book_类别获取数据的查询。 我错过了什么?我应该怎么做才能使hibernate问题加入查询? 书JAVA 图书分类。JAVA epository.java

  • 问题内容: 我有一个SQL查询: 错误:System.Data.Odbc.OdbcConnection.HandleError上的“订单”列不能为空 问题答案: 从手册: 当CommandType设置为Text时,用于ODBC的.NET Framework数据提供程序不支持将命名参数传递给SQL语句或OdbcCommand调用的存储过程。在这两种情况下,均使用问号(?)占位符。例如: 将OdbcP