我想使用CriteriaBuilder API实现类似的查询:
SELECT *, ROW_NUMBER() OVER( ORDER BY Student_Score) AS RowNumberRank
FROM StudentScore
主要问题是JPQL不支持窗口函数,并且我不知道如何复制其行为...
分析功能是特定于供应商的。这使得使用CriteriaBuilder API很难实现。使用本机查询将您的Java应用程序与特定的数据库供应商联系在一起。为避免这种情况,您可以创建一个特定于供应商的视图,并在Java应用程序中使用该视图使用条件api进行选择。
除了StudentScore
实体之外,您还必须定义一个具有额外属性StudentScoreView
的(只读)rowNumberRand
实体,可以在JPQL查询中使用它。