首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >java.lang.IllegalArgumentException:Either对所有参数使用@Param,一次输入的可寻址和排序除外,或者根本不使用

java.lang.IllegalArgumentException:Either对所有参数使用@Param,一次输入的可寻址和排序除外,或者根本不使用
EN

Stack Overflow用户
提问于 2017-04-19 07:41:58
回答 4查看 9.8K关注 0票数 8

我使用,当我将多个参数传递给存储库方法时,我会得到异常。有人能帮助传递多个参数来追加和使用where子句吗?

我的回购方法:

代码语言:javascript
复制
@Query("select site_name,month_gen from mykeyspace.dgr_item where type='Site' and name = ?0 and dgr_date in (:list)")
public List<Object> findGen(String siteName, @Param("list") List<Date> listt);

例外:

代码语言:javascript
复制
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:68)
at org.springframework.data.repository.query.Parameters.assertEitherAllParamAnnotatedOrNone(Parameters.java:294)
at org.springframework.data.repository.query.Parameters.<init>(Parameters.java:91)
at org.springframework.data.cassandra.repository.query.CassandraParameters.<init>(CassandraParameters.java:45)
at org.springframework.data.cassandra.repository.query.CassandraQueryMethod.createParameters(CassandraQueryMethod.java:131)
at org.springframework.data.cassandra.repository.query.CassandraQueryMethod.createParameters(CassandraQueryMethod.java:45)
at org.springframework.data.repository.query.QueryMethod.<init>(QueryMethod.java:75)
at org.springframework.data.cassandra.repository.query.CassandraQueryMethod.<init>(CassandraQueryMethod.java:64)
at org.springframework.data.cassandra.repository.support.CassandraRepositoryFactory$CassandraQueryLookupStrategy.resolveQuery(CassandraRepositoryFactory.java:152)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.<init>(RepositoryFactorySupport.java:436)
at org.springframework.data.repository.core.support.RepositoryFactorySupport.getRepository(RepositoryFactorySupport.java:221)
at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.initAndReturn(RepositoryFactoryBeanSupport.java:277)
at org.springframework.data.repository.core.support.RepositoryFactoryBeanSupport.afterPropertiesSet(RepositoryFactoryBeanSupport.java:263)
at org.springframework.data.cassandra.repository.support.CassandraRepositoryFactoryBean.afterPropertiesSet(CassandraRepositoryFactoryBean.java:76)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1687)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624)
... 41 common frames omitted
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-04-19 11:52:07

由: java.lang.IllegalArgumentException:要么对所有参数使用Param注解,只输入一次可寻址和排序,或者根本不使用!所有参数都应该有Param注释的声明--您的第一个参数没有

票数 7
EN

Stack Overflow用户

发布于 2019-09-05 12:35:56

如果在存储库中使用PageRequest,也会发生这种情况。

您应该在导入下面使用Pageable

代码语言:javascript
复制
import org.springframework.data.domain.Pageable;
票数 5
EN

Stack Overflow用户

发布于 2018-11-03 07:49:43

我遇到了同样的问题,我在:和表达式值之间添加了空格。

代码语言:javascript
复制
@Query ("SELECT yoga FROM Yoga yoga WHERE yoga.status =: status AND yoga.category =: category ORDER BY yoga.priorityOrder DESC")
List<YogaMaster> getVideosOfACategory(@Param("status")int status, @Param("category") String category, Pageable pageable);

然后我改变了

代码语言:javascript
复制
@Query ("SELECT yoga FROM YogaMaster yoga WHERE yoga.status = :status AND yoga.category = :category ORDER BY yoga.priorityOrder DESC")
List<YogaMaster> getTop4VideosOfACategory(@Param("status")int status, @Param("category") String category, Pageable pageable);

而且起作用了。

差别是=:类别(错误)和=:类别(正确),检查间距。

如果您使用PageRequest而不是Pageable,这可能是另外一个问题造成的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43489490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档