我有几个扩展 org.springframework.data.mongodb.repository.MongoRepository
的存储库。我添加了一些通过不同参数搜索实体的方法,但是,在任何搜索中,我只想搜索将 active
字段设置为 true
的实体(已选择用于标记为 active=false
而不是删除)。例如,两个示例存储库如下所示:
interface XxRepository extends MongoRepository<Xx, String> {
Optional<Xx> findOneByNameIgnoreCaseAndActiveTrue(String name)
Page<Xx> findByActiveTrue(Pageable pageable)
Xx findOneByIdAndActiveTrue(String id)
}
interface YyRepository extends MongoRepository<Yy, String> {
Optional<Yy> findOneByEmailAndActiveTrue(String email)
}
有什么方法可以让我不向每个方法添加 byActiveTrue
\andActiveTrue
并将其设置在一个地方的某个位置以用于所有查询?
最佳答案
请试试这个。无需提供实现。将“Activity ”和“电子邮件”更改为您的数据库列名称。
interface YyRepository extends MongoRepository<Yy, String> {
@Query(value = "{ 'active' : { '$eq': true }, 'email' : ?0 }")
Optional<Yy> findOneByEmailAndActiveTrue(@Param("email") String email)
}
关于java - Spring Data Repositiories - 为每个查询添加特定参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43411368/