结合Spring数据查询生成器和Spring数据JPA规范?
Spring数据允许您在存储库接口中声明findByLastname()之类的方法,并自动从方法名生成查询 是否可以让这些自动生成的查询也接受一个规范,以便在返回数据之前对其进行额外的限制? 这样,例如,我可以调用findByLastname(“Ted”,isGovernmentWorker()),它将查找姓氏为Ted且满足isGovernmentWorker()规范的所有用户结合Spring数据查询生成器和Spring数据JPA规范?,jpa,spring-data,specifications,query-builder,Jpa,Spring Data,Specifications,Query Builder,Spring数据允许您在存储库接口中声明findByLastname()之类的方法,并自动从方法名生成查询 是否可以让这些自动生成的查询也接受一个规范,以便在返回数据之前对其进行额外的限制? 这样,例如,我可以调用findByLastname(“Ted”,isGovernmentWorker()),它将查找姓氏为Ted且满足isGovernmentWorker()规范的所有用户 我之所以需要它,是因为我喜欢Spring数据提供的自动查询创建,而且我仍然需要能够在运行时应用任意规范。Spring数
我之所以需要它,是因为我喜欢Spring数据提供的自动查询创建,而且我仍然需要能够在运行时应用任意规范。Spring数据允许您实现自定义存储库并使用规范或QueryDSL 请看文章 因此,最后您将有一个
YourCustomerRepository
和相应的YourRepositoryImpl
实现,您将在其中放置findByLastname(“Ted”,isGovernmentWorker())
方法。
然后,
YourRepository
应该扩展YourCustomerRepository
界面。没有这样的功能。规范只能应用于操作
更新
数据访问操作由代理生成。因此,如果我们想在单个SELECT调用中对操作进行分组(如findByName+标准),那么代理必须理解并支持这种用法;但事实并非如此
在您的情况下,使用规范API时的预期用途如下所示:
findAll(Specifications.where(hasLastName("Ted")).and(isGovernmentWorker())
这不能回答我的问题。QueryDSL只是语法上的糖。我希望能够运行类似findByLastname(“Ted”,isGovernmentWorker())的查询。你能告诉我需要使用什么语法吗。我不认为有这样的解决办法。对。但是有没有一种方法可以模拟同样的事情呢?例如,您可以围绕findAll(规范s)创建一个包装器来模拟findOne(规范s)。是的,完全遵循规范肯定是可行的——我只是希望我也能利用SpringData的查询生成器功能。再次感谢!