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

Spring数据JPA @查询和可分页

步德宇
2023-03-14
问题内容

我正在使用Spring Data JPA,当我@Query用来定义一个 WITHOUT 的查询时Pageable,它可以工作:

public interface UrnMappingRepository extends JpaRepository<UrnMapping, Long> {
    @Query(value = "select * from internal_uddi where urn like %?1% or contact like %?1%", 
           nativeQuery = true)
    List<UrnMapping> fullTextSearch(String text);
}

但是,如果我添加第二个参数Pageable@Query则将无法正常工作,Spring将解析该方法的名称,然后抛出 异常 No property full found。这是错误吗?

public interface UrnMappingRepository extends JpaRepository<UrnMapping, Long> {
    @Query(value = "select * from internal_uddi where urn like %?1% or contact like %?1%",
           nativeQuery = true)
    Page<UrnMapping> fullTextSearch(String text, Pageable pageable);
}

问题答案:

在Spring论坛上提出了一个类似的问题,指出要应用分页,必须派生第二个子查询。因为子查询引用的是相同的字段,所以您需要确保查询对引用的实体/表使用别名。这意味着您在哪里写了:

select * from internal_uddi where urn like

您应该改为:

select * from internal_uddi iu where iu.urn like ...


 类似资料:
  • 我有3个实体在我的数据库。实体A具有主密钥PK-A,实体B具有主密钥PK-B,实体C具有主密钥PK-C。 实体A与实体B具有1对多关系,实体B与实体C具有1对多关系 我想在Spring Data JPA中基于PK-A(实际上是实体B中的外键)查询实体C。有可能吗? 但这行不通。还有什么建议我可以试试吗?

  • 我有一个简单的查询如下“select * from USERS”。我还使用Pageable来启用分页。 此查询可能具有基于给定参数是否为 null 的可选谓词。 例如,如果给定了“code”参数且该参数不为空,则查询变为“select * from USERS where code =:code”; 据我所知,我不能使用@Query注释来实现这一点。我可以实现一个定制的存储库,并使用EntityM

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

  • 我有一个简单的JpaRepository和一个finder,它返回按名为“number”的属性降序排列的记录。“number”属性也是我的实体的@Id。这很好,但是有数千条记录,所以我想返回一个页面而不是列表。 如果我将查找器更改为以下内容,则排序不再起作用。我尝试过使用可分页参数的排序功能,但不起作用。还删除了OrderByNumberDesc,但结果相同。 EDIT-添加控制器方法 以下是我的

  • 根据Spring文档https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories.special-返回的参数不应发出计数查询。 但是随着我的Spring,它变得有点奇怪。 当使用page运行页面请求时,它不需要计数查询,我认为这是正确的。 但当我使用页面(或以上)调用存储库时,它突然在选择查询之后执

  • 我试图指定一个用注释的存储库方法和一个带有对象的Pagable: 编辑1:此存储库正在扩展分页和排序存储库。 对象使用以下方法签名指定: 但生成的输出查询没有排序选项,例如: ...在我期待的时候: 这里有人遇到过这样的问题吗?我使用的是Spring Boot 1.5。x。