验证在继承接口中的公共抽象方法的查询失败。

huangapple 未分类评论50阅读模式
英文:

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.&lt;init&gt;(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&lt;T, ID extends Serializable&gt; extends BaseRepository&lt;T, ID&gt; {
	
	@Query(&quot;SELECT a FROM #{#entityName} a WHERE a.parentId = :parent_id&quot;)
	List&lt;T&gt; getAllChildrenOf(
			@Param(&quot;parent_id&quot;) Integer parent_id
	);
	
	@Query(&quot;SELECT a FROM #{#entityName} a WHERE a.isActive = 1 AND a.name LIKE %:filter% ORDER by a.name ASC&quot;)
	List&lt;T&gt; getAllByNameFilter(
			@Param(&quot;filter&quot;) String filter,
			Pageable pageable
	);

	// ** THIS IS THE OFFENDING LINE **
	@Query(&quot;SELECT a FROM #{#entityName} a WHERE a.isActive = 1 AND a.desc LIKE %:filter% ORDER by a.name ASC&quot;)
	List&lt;T&gt; getAllByDescFilter(
			@Param(&quot;filter&quot;) 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?

huangapple
  • 本文由 发表于 2020年4月5日 02:37:05
  • 转载请务必保留本文链接:https://java.coder-hub.com/61032998.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定