spring - 在 spring 存储库中过滤实体
问题描述
是否可以将过滤器应用于带有注释的结果而不是扩展方法名称?
例如:
@Repository
public interface JobRepository extends JpaRepository<Job, Long> {
List<Job> findAllByUserAndEnabledIsTrue(User u);
}
在这里我应用 filter 'enabled == true'
。但是假设我们有很多方法。用扩展名称编写它们很不方便。我可以将此过滤器应用于整个存储库吗?
我发现
@FilterDef
但我不知道如何使用以及 spring 是否支持这个注释。
解决方案
据我所知,Spring Data JPA 不依赖于 Hibernate,它可以与任何 JPA 实现一起使用。Hibernate@Filters
不是 JPA 标准,所以简单的答案是否定的!Spring JPA 不支持@Filter
s。
但是您可以@Filter
使用 AOP 应用 s,并且只需在存储库方法上应用方面。
@Query
顺便说一句,我认为更好的解决方案是使用 Spring Data JPA 的注释进行手写查询。因为这样你可以根据上下文含义来命名方法,而不是根据它们的内部实现来命名。
例如,您可以命名您的方法findActiveJobsForUser
,使其更有意义和可读性。
推荐阅读
- java - XmlElement 在 SOAP 中显示为小写
- android - 在技术上是否可以阻止用户更改原始启动器?
- wcf - SoapUI 对序列模式断言是否过于严格?
- python - 如何在 Python 中访问我的 JSON 中的元素?
- c++ - 自动展开 qtreeview 中委托的 qcombobox
- node.js - 从 Node.js 中的 SerialPort 读取浮点数据
- angularjs - 日期选择器图标无法找到并单击它
- flutter - 如何在不影响后台内容的情况下弯曲底部导航栏角?扑
- reactjs - 在Textfield material-ui中选择props
- validation - 上传篡改的pdf文件时,如何在角度10中捕获“无法加载pdf文档”