首页 > 解决方案 > 如何在 Hibernate Criteria API 中使用 row_number(或任何具有相同行为的东西)?

问题描述

我想用 CriteriaBuilder API 实现一个类似的查询:

SELECT *, ROW_NUMBER() OVER( ORDER BY Student_Score) AS RowNumberRank
FROM StudentScore

主要问题是 JPQL 不支持窗口函数,我不知道如何复制它们的行为......

标签: javahibernatejpawindow-functionscriteria-api

解决方案


分析功能是特定于供应商的。这使得使用 CriteriaBuilder API 很难实现。使用本机查询将您的 java 应用程序与特定的数据库供应商联系起来。为避免这种情况,您可以创建供应商特定视图并在您的 java 应用程序中使用该视图创建一个带有标准 api 的选择。

除了StudentScore您已经拥有的实体之外,您还必须定义一个StudentScoreView具有额外属性的(只读)实体rowNumberRand,您可以在 JPQL 查询中使用该实体。


推荐阅读