Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
结合Spring数据查询生成器和Spring数据JPA规范?_Jpa_Spring Data_Specifications_Query Builder - Fatal编程技术网

结合Spring数据查询生成器和Spring数据JPA规范?

结合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数据允许您在存储库接口中声明findByLastname()之类的方法,并自动从方法名生成查询

是否可以让这些自动生成的查询也接受一个规范,以便在返回数据之前对其进行额外的限制?

这样,例如,我可以调用findByLastname(“Ted”,isGovernmentWorker()),它将查找姓氏为Ted且满足isGovernmentWorker()规范的所有用户


我之所以需要它,是因为我喜欢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的查询生成器功能。再次感谢!