我正在研究如何为MongoDB中的上限集合编写Tailable游标查询的一些教程。我发现我可以使用@Tailable
实现此目的。例如,像这样:
public interface ReactiveProductRepository extends ReactiveCrudRepository<Product, String>{
@Tailable
Flux<Product> findByName(String name);
}
这就像一个魅力。此外,这也适用于@Query
注释(如果是复杂查询)。
但是,如果我想将ReactiveCrudRepository
中的某个方法设为Tailable呢?例如,findAll
。我能找到的唯一选择是在我的存储库中添加这样的方法:
@Tailable
@Query("{}")
Flux<Product> findAllProducts();
这只是findAll。我想知道:是否应该为内置方法指定@Tailable
功能?
有什么想法?有一个类似于TailableRepository
的新界面(PagingAndSortingRepository
)是否有意义。
答案 0 :(得分:1)
实际实现支持的存储库方法不能改变其行为或被查询方法覆盖。
您可以声明不带参数的查询方法,并为要用作入口点的所需方法提供default
实现:
public interface LoginEventRepository extends ReactiveCrudRepository<LoginEvent, String> {
@Tailable
Flux<LoginEvent> findPeopleBy();
@Override
default Flux<LoginEvent> findAll(){
return findPeopleBy();
}
}
另请参阅here以获取@Tailable
无参数查询方法的示例。
答案 1 :(得分:0)
您可以使用findWithTailableCursorBy检索所有记录而无需查询
@Tailable
Flux<Product> findWithTailableCursorBy();