Java 如何在Hibernate标准API中使用行号(或具有相同行为的任何东西)?
我想用CriteriaBuilder API实现类似的查询:Java 如何在Hibernate标准API中使用行号(或具有相同行为的任何东西)?,java,hibernate,jpa,window-functions,criteria-api,Java,Hibernate,Jpa,Window Functions,Criteria Api,我想用CriteriaBuilder API实现类似的查询: SELECT*,按学生分数排序,第行编号()为RowNumberRank 来自学生分数 主要问题是JPQL不支持窗口函数,我不知道如何复制它们的行为…分析函数是特定于供应商的。这使得CriteriaBuilderAPI很难实现。使用本机查询将java应用程序绑定到特定的数据库供应商。 为了避免这种情况,您可以创建特定于供应商的视图,并使用该视图在java应用程序中创建一个带有条件api的select 除了您已经拥有的StudentS
SELECT*,按学生分数排序,第行编号()为RowNumberRank
来自学生分数
主要问题是JPQL不支持窗口函数,我不知道如何复制它们的行为…分析函数是特定于供应商的。这使得CriteriaBuilderAPI很难实现。使用本机查询将java应用程序绑定到特定的数据库供应商。 为了避免这种情况,您可以创建特定于供应商的视图,并使用该视图在java应用程序中创建一个带有条件api的select
除了您已经拥有的
StudentScore
实体之外,您必须定义一个(只读)StudentScoreView
实体,该实体具有额外的属性rowNumberRand
,您可以在JPQL查询中使用该属性。分析函数是特定于供应商的。这使得CriteriaBuilderAPI很难实现。使用本机查询将java应用程序绑定到特定的数据库供应商。
为了避免这种情况,您可以创建特定于供应商的视图,并使用该视图在java应用程序中创建一个带有条件api的select
除了
StudentScore
实体之外,您还必须定义一个(只读)StudentScoreView
实体,该实体具有额外的属性rowNumberRand
,您可以在JPQL查询中使用该属性。我知道本机查询是可行的,但这是一个非常错误的解决方案……您不知道。正如您所说,本机查询是您唯一的解决方案,因为criteria API只提供所有数据库系统都具有的通用函数,如联接、where子句、sum、avg等。不支持特定于供应商的函数我已经看到,但我不确定如何转换我的查询。我知道使用本机查询是可能的,但这是一个非常错误的解决方案…你不知道。正如您所说,本机查询是您唯一的解决方案,因为criteria API只提供所有数据库系统都具有的通用函数,如联接、where子句、sum、avg等。不支持特定于供应商的函数。我已经看到了这一点,但我不确定如何转换查询。