当前位置: 首页 > 面试题库 >

Spring Data-为什么无法通过本机查询进行分页

越麒
2023-03-14
问题内容

假设我们有一个名为的实体MyEntity。可以使用@Query和带有命名查询来查询可分页的结果,例如

 @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);

将无法正常工作。

这背后的原因是什么?是否可以使Pageable使用本机查询?


问题答案:

这是在spring data jpa文档中提供的描述(http://docs.spring.io/spring-
data/jpa/docs/1.8.0.M1/reference/html/

本机查询@Query批注允许通过将nativeQuery标志设置为true来执行本机查询。请注意,我们目前不支持对本机查询执行分页或动态排序,因为我们必须操纵声明的实际查询,而对于本机SQL我们无法可靠地做到这一点。

JPQL抽象化SQL实现及其提供程序的详细信息,并使ORM​​框架负责生成正确的SQL。

  1. 因此,通过以JPQL形式使用分页,Spring只需生成正确的JPQL,它将在ORM级别上进行解释以更正SQL。

  2. 在使用SQL进行操作时,这意味着Spring知道如何为绝大多数RDBMS生成正确的SQL,从而复制了ORM功能,这是过多的开销。



 类似资料:
  • 行不通。 这背后的原因是什么?是否可以使用本机查询进行分页操作?

  • 问题内容: 我正在尝试使此函数正常工作,该函数对参数进行请求,然后将responseText发送给该函数。 似乎只能做到(由于Firebug命令)。 这里是: 问题答案: 我解决了分配onload事件而不是onreadystatechange的问题:

  • 我已经在亚马逊(AWS)机器上创建了一个linux节点。我可以 ssh 到节点,但我不能 ping 到它的 IPv4 公共 IP。我应该怎么做才能解决此问题? 作品: 不工作(返回0失败): 请注意,当我进行此设置时,我可以从另一个amazon节点ping到另一个amazon节点。但从非amazon节点,我仍然无法对amazon结点执行ping操作。 感谢您宝贵的时间和帮助。

  • 我正在阅读针对MongoOperations的SpringData MongoDB配置http://docs.spring.io/spring-data/mongodb/docs/current/api/org/springframework/data/mongodb/core/MongoOperations.html#findOne-组织。springframework。数据mongodb。果心

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

  • 我们有两个Java web应用程序项目正在由SonarQube(Version6.4)的同一个实例进行分析。这两个项目都有Java、JavaScript和CSS组件,我们希望对这些概要文件运行分析。 对于所有三种语言都成功地分析了项目A,而对于Java只分析了项目B。 全局设置几乎是现成的,两个项目都没有任何特定于项目的设置。 我们认为它应该不会有什么影响,但是Project A是一个使用JSP的