如何使用Hibernate为Spring数据JPA的所有查找方法添加全局where子句?

Zee*_*han 3 java spring hibernate spring-data spring-data-jpa

我们正在使用带有Hibernate的Spring数据JPA的Web应用程序。

在应用程序中,每个实体中都有一个compid字段。这意味着在每个数据库调用(Spring Data方法)中都必须使用compid进行检查。

我需要一种方法,这个“ where compid =?” 检查为每种查找方法自动注入。这样我们就不必专门为compid检查而烦恼。

通过Spring Data JPA框架可以实现吗?

Cep*_*pr0 5

也许Hibernate的注释@Where会为您提供帮助。它将传递的条件添加到与该实体相关的任何JPA查询中。例如

@Entity
@Where(clause = "isDeleted='false'")
public class Customer {
    //...
    @Column
    private Boolean isDeleted;
}
Run Code Online (Sandbox Code Playgroud)

更多信息:12

  • “通用查询增强”有一个悬而未决的问题,这是您所追求的功能类型,但它没有取得太大进展https://jira.spring.io/browse/DATACMNS-293。我认为添加到超类中的“@Where”注释是您最好的选择 - 因为它是 Hibernate 特定注释,它不适用于 Spring 数据存储库,因此需要在实体上运行。 (2认同)