找不到类型 Pairs 的属性 findAll
Posted
技术标签:
【中文标题】找不到类型 Pairs 的属性 findAll【英文标题】:No property findAll found for type Pairs 【发布时间】:2022-01-18 12:44:08 【问题描述】:我想使用 ReactiveCrudRepository
创建一个响应式存储库
我试过这段代码:
import io.nexo.admin.console.domain.ActivePairs;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.domain.Specification;
import org.springframework.data.repository.reactive.ReactiveCrudRepository;
import org.springframework.stereotype.Repository;
import reactor.core.publisher.Flux;
@Repository
public interface ActivePairsSearchRepository extends ReactiveCrudRepository<ActivePairs, Long>
Flux<ActivePairs> findAll(Specification spec, Pageable pageable);
但在部署过程中出现错误:
Caused by: java.lang.IllegalArgumentException: Failed to create query for method public abstract reactor.core.publisher.Flux io.nexo.admin.console.repository.ActivePairsSearchRepository.findAll(org.springframework.data.jpa.domain.Specification,org.springframework.data.domain.Pageable)! No property findAll found for type Pairs
你知道我该如何解决这个问题吗?
【问题讨论】:
JPA 无法响应,因为 JPA 在设计上是阻塞的。所以这根本行不通。 有哪些替代解决方案? 不使用 JPA 反应式。尽管如此,它仍然是阻塞的,因此试图将其硬塞到反应堆栈中只会使事情复杂化。但是你总是可以只返回一个列表(只需使用常规的findAll
并将List
或Stream
转换为Flux
,仍然阻塞,因为所有结果都被获取而不是以反应的方式)。跨度>
你能给我看一下代码示例吗,请问如何进行转换?
只需使用常规的JpaRepostiry
并在调用代码中使用Flux
工厂方法转换findAll
调用的结果。
【参考方案1】:
当您想通过规范查找时,您应该在方法名称中声明,例如Flux<ActivePairs> findBySpecification(Specification specification, Pageable pageable);
【讨论】:
以上是关于找不到类型 Pairs 的属性 findAll的主要内容,如果未能解决你的问题,请参考以下文章
Win7下在Visual Studio 2008里运行程序时出现找不到MFC90D.dll文件, Command Prompt找不指定路径