我有幾個存儲庫可以擴展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)
}
有沒有辦法,讓我不要\ andActiveTrue
添加byActiveTrue
到每一個方法,並在一處地方設置它爲所有的疑問?
是的,但我喜歡在春天的數據儲存庫中的自定義查詢的簡潔性和可讀性的風格,所以我想知道如果有一種方法可以繼續使用查詢生成的聲明的方式,但不重複該但是,不確定是否有任何實現它的方式。 – OlgaMaciaszek
你可以使用繼承的方式來編碼我爲你提供的,只需通過'Query q = em.createQuery(「Select * From table Where id =:idValue and active = true」)來獲得'W get(X id)'字段。 ; q.setParameters(「idValue」,id); return'em_getSingleResult();' – Zorglube
然後,在每個存儲庫對象繼承'MongoRepository'你'Override'通過'@Override獲取方法get(X id){super.get(id); }' –
Zorglube