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

Spring数据JpaRepository方法问题中的Pagable和@Param

钮鸿煊
2023-03-14

我有以下存储库:

public interface MilestoneRepository extends JpaRepository<Milestone,Date> {
    @Query("select m from Milestone m where m.date <= :date order by m.date desc")
    Page<Milestone> findLeftClosest(@Param("date") Date date, Pageable pageable);
}

如上所述的定义工作正常,但如果我切换参数顺序:

public interface MilestoneRepository extends JpaRepository<Milestone,Date> {
    @Query("select m from Milestone m where m.date <= :date order by m.date desc")
    Page<Milestone> findLeftClosest(Pageable pageable, @Param("date") Date date);
}

我在上下文初始化时遇到以下异常(公布了最有趣的原因):

Caused by: java.lang.IllegalArgumentException: Either use @Param on all parameters except Pageable and Sort typed once, or none at all!
    at org.springframework.util.Assert.isTrue(Assert.java:65)
    at org.springframework.data.repository.query.Parameters.assertEitherAllParamAnnotatedOrNone(Parameters.java:265)
    at org.springframework.data.repository.query.Parameters.<init>(Parameters.java:85)
    at org.springframework.data.jpa.repository.query.JpaParameters.<init>(JpaParameters.java:43)
    at org.springframework.data.jpa.repository.query.JpaQueryMethod.createParameters(JpaQueryMethod.java:284)
    at org.springframework.data.jpa.repository.query.JpaQueryMethod.createParameters(JpaQueryMethod.java:51)
    at org.springframework.data.repository.query.QueryMethod.<init>(QueryMethod.java:70)
    at org.springframework.data.jpa.repository.query.JpaQueryMethod.<init>(JpaQueryMethod.java:79)
    at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$AbstractQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:69)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.<init>(RepositoryFactorySupport.java:304)
    at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:161)
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.initAndReturn(RepositoryFactoryBeanSupport.java:224)
    at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:210)
    at org.springframework.data.jpa.repository.support.JpaRepositoryFactoryBean.afterPropertiesSet(JpaRepositoryFactoryBean.java:84)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1612)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1549)
    ... 59 more

对我来说这看起来像个虫子。我的感觉对吗?有人知道这方面的报道吗?或者,这可能是记录在案的某个地方和正当的行为?

sping-data-jpa版本:

<dependency>
    <groupId>org.springframework.data</groupId>
    <artifactId>spring-data-jpa</artifactId>
    <version>1.5.2.RELEASE</version>
</dependency>

共有1个答案

欧阳昊阳
2023-03-14

这确实是一个错误。我提交并修复了DATACMNS-520,这将使它成为Spring Data Commons1.7.3, 1.8.1和1.9 M1。

 类似资料:
  • 我知道这个问题,但是使用我仍然有同样的问题()。我的班级是: 编辑 电话: 方法:

  • 我正在开发一个与spring Batch集成的Spring Boot应用程序。当我使用具有以下数据源属性的独立Spring Boot应用程序时,它工作得很好。但是当我将spring批处理集成到应用程序时,它会产生错误。 我试图通过作业配置中的moveToQueryStep()调用DbServiceImpl中的getCode()。我可以在dbserviceimpl.java“initialize”方

  • 我正在尝试使用spring数据JPA(我的模型类用户)实现一对多关联。java是, 和私人住宅。java是, 我的观点是, 我需要从用户那里获取用户名,从PriVillage获取pname。通过组合我需要显示。现在我在我的存储库中使用下面的查询,即, 如上所述,我需要从一个表中选择用户名,从另一个表中选择pname。我需要如何更改我的查询?

  • 我有spring boot项目(版本< code>2.4.6),带有spring数据依赖项(< code > spring-boot-starter-data-JPA )和postgreSQL驱动程序。 在项目中,我们使用Hibernate和数据存储库,通过以下方式配置: 我还想加入反应性R2DBC。我的计划是在一个特定的地方使用它,在那里我们与其他系统集成,这样的通信通过反应式数据流进行。根据它

  • 我有以下实体: 用户: 新闻来源: UsersRepository和NewsSourcesRepository是来自Spring数据JPA的简单JPA存储。其配置如下: 我的测试在第15行抛出一个LazyInitializationException异常。信息是: 未能延迟初始化角色:新闻的集合。实体。用户。使用者新闻源,无法初始化代理-无会话 如果我将我的测试注释为@Transactional

  • 本文向大家介绍解决springboot无法注入JpaRepository的问题,包括了解决springboot无法注入JpaRepository的问题的使用技巧和注意事项,需要的朋友参考一下 使用内置服务器启动springboot项目时,会从@SpringBootApplication修饰类所在的包开始,加载当前包和所有子包下的类,将由@Component @Repository @Service