5
弹簧数据蒙戈:1.7.0.RC1
蒙戈-java的驱动程序:3.2.2
文献:
@Document(collection = "products")
public class Product {
@Id
private String sid;
private String name;
private Long vendor;
(...)
}
库:
public interface ProductRepository extends MongoRepository<Product, String> {
Product findByName(String productName);
}
我的果阿l将拦截在Product集合上执行的任何查询,并添加谓词或规范,而不修改存储库或实现方法findByNameAndBelongsToVendorList。
我需要这个拦截器还是AspectJ,因为我有多种方法,如:
Page<Product> findAll(Pageable page);
List<Product> findByCategory(String category, Pageable pageRequest);
(...)
目标
findByName // perform a filter by name (explicit)
// and a filter by vendor (injected via inteceptor or aspecJ)
避免这样做
@Repository
public class ProductRepositoryCustomImpl implements ProductRepositoryCustom {
@Autowired
private MongoTemplate template;
public Product findByNameAndBelongsToVendorList(String name, List<Long> vendors, Pageable pageRequest) {
Criteria criteriaVendor = Criteria.where("vendors").in(vendors);
Query query = new Query(criteriaVendor);
query.with(pageRequest);
return template.findOne(query, Product.class);
}
}
目前我使用2个框架... SpringData e MongoTemplate。使用MongoTemplate,我可以在* org.springframework.data.mongodb.core *上使用切入点,并拦截所有方法,比如findAll,findOne ...但是对于SpringData我不知道该怎么做。 – Leonel