我使用,当我将多个参数传递给存储库方法时,我会得到异常。有人能帮助传递多个参数来追加和使用where子句吗?
我的回购方法:
@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);
例外:
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
发布于 2017-04-19 11:52:07
由: java.lang.IllegalArgumentException:要么对所有参数使用Param注解,只输入一次可寻址和排序,或者根本不使用!所有参数都应该有Param注释的声明--您的第一个参数没有
发布于 2019-09-05 12:35:56
如果在存储库中使用PageRequest
,也会发生这种情况。
您应该在导入下面使用Pageable
,
import org.springframework.data.domain.Pageable;
发布于 2018-11-03 07:49:43
我遇到了同样的问题,我在:和表达式值之间添加了空格。
@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);
然后我改变了
@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,这可能是另外一个问题造成的。
https://stackoverflow.com/questions/43489490
复制相似问题