如何在 JPA 查询中编写 MAX 和 OVER (PARTITION BY) 函数

raj*_*raj 7 jpa window-functions spring-data-jpa

我需要根据另一列(绘图编号)获取一列(修订版)最大值。谁能告诉我此功能的 JPA 查询。

我编写了以下查询,但该查询不起作用。

请帮助我如何在 JPA 查询中编写 MAX 和 OVER (PARTITION BY) 函数。

    @Query("select dr FROM
        (SELECT MAX(dr.revision) over (PARTITION BY d.drawing_number) AS latest_revision
        FROM DrawingRate dr
        JOIN dr.drawing d
        JOIN d.modifiedBy mb
        WHERE mb.Id=:Id
        OR piu.Id=:Id
        ORDER BY d.localModifiedOn DESC NULLS LAST
        ) WHERE dr.revision = :latest_revision")
Run Code Online (Sandbox Code Playgroud)

运行此 Spring 数据 JPA 查询时不起作用,显示以下错误:

引起原因:java.lang.IllegalArgumentException:org.hibernate.hql.internal.ast.QuerySyntaxException:意外标记:(第1行附近第16列[select dr from (select max(dr.revision) over (partition by d.drawing_number) ) AS last_enrolment_date 来自实体.DrawingRate dr join dr.drawing d JOIN d.modifiedBy mb left join dr.modifiedBy u WHERE mb.Id=:IdOR piu.Id=:Id order by d.localModifiedOn DESC NULLS LAST) WHERE dr.revision =:最新版本]

请帮助我如何在 JPA 查询中编写 MAX 和 OVER (PARTION BY) 函数。