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

Spring数据--为什么不能使用本地查询进行分页

赵星华
2023-03-14
 @Query(value = "select e from MyEntity e where e.enabled = true")
 Page<MyEntity> findAllEnabled(Pageable pageable);
 @Query(value = "select * from my_entity where enabled = true", nativeQuery = true)
 Page<MyEntity> findAllEnabled(Pageable pageable);

行不通。

这背后的原因是什么?是否可以使用本机查询进行分页操作?

共有1个答案

西门庆
2023-03-14

我不知道这是否仍然与您相关:至少在Spring Data JPA1.9.4中,您可以指定两个查询。

给定一个存储库:

interface FoobarEntityRepository extends JpaRepository<FoobarEntity, Integer> {
    Page findFoobarsSpecialQuery(String someParameter, final Pageable pageable);
}

您可以向实体添加2个本机查询,一个用于查询本身,一个用于count语句:

@Entity
@SqlResultSetMappings({
    @SqlResultSetMapping(name = "SqlResultSetMapping.count", columns = @ColumnResult(name = "cnt"))
})
@NamedNativeQueries({
    @NamedNativeQuery(
            name = "FoobarEntity.findFoobarsSpecialQuery",
            resultClass = DailyPictureEntity.class,
            query = "Select * from foobars f where someValue = :someParameter "
    ),
    @NamedNativeQuery(
            name = "FoobarEntity.findFoobarsSpecialQuery.count",
            resultSetMapping = "SqlResultSetMapping.count",
            query = "Select count(*) as cnt from foobars f where someValue = :someParameter "
    )
})
FoobarEntity {
}
 类似资料:
  • 问题内容: 假设我们有一个名为的实体。可以使用和带有命名查询来查询可分页的结果,例如 但是,使用本机查询无法实现相同的目的,因此这 将无法正常工作。 这背后的原因是什么?是否可以使Pageable使用本机查询? 问题答案: 这是在spring data jpa文档中提供的描述(http://docs.spring.io/spring- data/jpa/docs/1.8.0.M1/referenc

  • 我正在运行这样一个简单的SQL连接和select,但在运行查询时,我遇到了非常奇怪的错误。 警告:mysqli_fetch_array()希望参数1是mysqli_结果,布尔值在第23行的C:\xampp\htdocs\Webmaster\run\forum_mc.php中给出 警告:mysqli_query():第24行()上C:\xampp\htdocs\Webmaster\run\forum

  • 谁能告诉我@Query注释将支持数据库独立性查询机制 例子: 如果我写这个查询,它会支持所有的数据库,如Mysql、oracle、postgres。 我在spring data jpa参考文档站点中发现了类似的内容 这意味着如果我编写nativeQuery=true,它将被视为本机查询,如果不编写,它将表现为Spring data jpa特定查询,或者它将如何表现请澄清。

  • 所以我正在用ElasticSearch做实验,这就是我所做的。 1)在我的索引上添加了一个名为“test”的geo_point映射 2)对测试中的文档进行索引: 3)然后通过地理定位过滤器编写一个查询,如下所示: 为此我得到: “错误”:“SearchPhaseExecutionException[未能执行阶段[query],所有碎片都失败;shardFailures{[QpGEHtdcReeYm

  • 我正在尝试编写一个非常简单的UDP客户机/服务器对,它将在同一台计算机上一起工作(目前),但是我的包没有一个被传送。以下代码是一个100%完整的VB.NET控制台应用程序。它运行时不会抛出错误,但是mListener。接收命令从不返回。 问题 1:为什么我没有收到任何数据包? 问题2:为什么我不能让我的客户使用IP地址。有没有终点?当我尝试连接到NewIPEndPoint(IPAddress.An

  • 此查询由Django ORM使用RAWSQL生成: 这是一个错误 1242-子查询返回超过1行 这是子查询的结果 我读了MYSQL文档,但我不明白为什么返回两行会有问题。我试过很多替代方法。 问题出在哪里?