英文:
Validation failed for query for method public abstract in inherited interface
问题
我在继承此方法时遇到以下错误:
Caused by: java.lang.IllegalArgumentException: 调用公共抽象方法 java.util.List com.vw.asa.repositories.base.BaseCmsRepository.getAllByDescFilter(java.lang.String,org.springframework.data.domain.Pageable) 时验证失败!
at org.springframework.data.jpa.repository.query.SimpleJpaQuery.validateQuery(SimpleJpaQuery.java:93)
at org.springframework.data.jpa.repository.query.SimpleJpaQuery.<init>(SimpleJpaQuery.java:63)
at org.springframework.data.jpa.repository.query.JpaQueryFactory.fromMethodWithQueryString(JpaQueryFactory.java:76)
at org.springframework.data.jpa.repository.query.JpaQueryFactory.fromQueryAnnotation(JpaQueryFactory.java:56)
at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$DeclaredQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:140)
at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateIfNotFoundQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:207)
at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$AbstractQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:78)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.lookupQuery(RepositoryFactorySupport.java:574)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.lambda$mapMethodsToQuery$1(RepositoryFactorySupport.java:567)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.Iterator.forEachRemaining(Iterator.java:116)
这是引发错误的类,附带错误行注释:
@NoRepositoryBean
public interface BaseCmsRepository<T, ID extends Serializable> extends BaseRepository<T, ID> {
@Query("SELECT a FROM #{#entityName} a WHERE a.parentId = :parent_id")
List<T> getAllChildrenOf(
@Param("parent_id") Integer parent_id
);
@Query("SELECT a FROM #{#entityName} a WHERE a.isActive = 1 AND a.name LIKE %:filter% ORDER by a.name ASC")
List<T> getAllByNameFilter(
@Param("filter") String filter,
Pageable pageable
);
// ** 这是引发错误的行 **
@Query("SELECT a FROM #{#entityName} a WHERE a.isActive = 1 AND a.desc LIKE %:filter% ORDER by a.name ASC")
List<T> getAllByDescFilter(
@Param("filter") String filter,
Pageable pageable
);
}
不太清楚为什么这行会触发错误,而其他行则不会。也许我漏掉了一个显而易见的错误,只需要多一双眼睛看看吗?
英文:
I am getting the following error when inheriting this method:
Caused by: java.lang.IllegalArgumentException: Validation failed for query for method public abstract java.util.List com.vw.asa.repositories.base.BaseCmsRepository.getAllByDescFilter(java.lang.String,org.springframework.data.domain.Pageable)!
at org.springframework.data.jpa.repository.query.SimpleJpaQuery.validateQuery(SimpleJpaQuery.java:93)
at org.springframework.data.jpa.repository.query.SimpleJpaQuery.<init>(SimpleJpaQuery.java:63)
at org.springframework.data.jpa.repository.query.JpaQueryFactory.fromMethodWithQueryString(JpaQueryFactory.java:76)
at org.springframework.data.jpa.repository.query.JpaQueryFactory.fromQueryAnnotation(JpaQueryFactory.java:56)
at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$DeclaredQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:140)
at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$CreateIfNotFoundQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:207)
at org.springframework.data.jpa.repository.query.JpaQueryLookupStrategy$AbstractQueryLookupStrategy.resolveQuery(JpaQueryLookupStrategy.java:78)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.lookupQuery(RepositoryFactorySupport.java:574)
at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.lambda$mapMethodsToQuery$1(RepositoryFactorySupport.java:567)
at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
at java.util.Iterator.forEachRemaining(Iterator.java:116)
This is the offending class with noted line of error:
<!-- language: java -->
@NoRepositoryBean
public interface BaseCmsRepository<T, ID extends Serializable> extends BaseRepository<T, ID> {
@Query("SELECT a FROM #{#entityName} a WHERE a.parentId = :parent_id")
List<T> getAllChildrenOf(
@Param("parent_id") Integer parent_id
);
@Query("SELECT a FROM #{#entityName} a WHERE a.isActive = 1 AND a.name LIKE %:filter% ORDER by a.name ASC")
List<T> getAllByNameFilter(
@Param("filter") String filter,
Pageable pageable
);
// ** THIS IS THE OFFENDING LINE **
@Query("SELECT a FROM #{#entityName} a WHERE a.isActive = 1 AND a.desc LIKE %:filter% ORDER by a.name ASC")
List<T> getAllByDescFilter(
@Param("filter") String filter,
Pageable pageable
);
}
Not sure why this line triggers it, but the others do not. Maybe I am missing a glaring mistake, and just need a second set of eyes?
专注分享java语言的经验与见解,让所有开发者获益!
评论