Spring Data允许您在存储库接口中声明类似findByLastname()的方法,并自动为您生成方法名称中的查询。
是否有可能以某种方式让这些自动生成的查询也接受规范,以便在数据返回之前对数据进行额外限制?
这样,我可以调用findByLastname(“Ted”,isGovernmentWorker()),它会找到所有姓氏为Ted AND且满足isGovernmentWorker()规范的用户。
我需要这个,因为我想要Spring Data 和提供的自动查询创建,因为我仍然需要能够在运行时应用任意规范。
答案 0 :(得分:4)
没有这样的功能。规格只能应用于JpaSpecificationExecutor操作。
<强>更新强> 数据访问操作由代理生成。因此,如果我们想在单个SELECT调用中对操作进行分组(如在findByName + Criteria中),则代理必须理解并支持这种用法;它没有。
使用规范API时的预期用途对于您的情况看起来像这样:
findAll(Specifications.where(hasLastName("Ted")).and(isGovernmentWorker())
答案 1 :(得分:0)
Spring数据允许您实现自定义存储库并使用规范或QueryDSL。
请参阅this文章。
最后,您将有一个YourCustomerRepository
和适当的YourRepositoryImpl
实施,您将在其中放置findByLastname("Ted", isGovernmentWorker())
方法。
然后YourRepository
应扩展YourCustomerRepository
接口。