gpt4 book ai didi

java - 基于配置文件的 Spring 数据中实体的附加过滤器

转载 作者:行者123 更新时间:2023-11-30 05:18:25 24 4
gpt4 key购买 nike

我有一个数据库表,我们将其称为“USERS”。在此表中,我有标准字段,例如 namesurnameage 等。该表映射到JPA实体类:

@Entity
@Table(name = "users")
public class User {
@Id
@Column(name = "login")
private String id;

@Column(name = "name")
private String name;
//etc...
}

现在我需要能够根据环境过滤一些用户。可以根据 Spring Activity 配置文件定义环境。我的假设是添加新的数据库列,比方说 boolean 过滤器,并基于 Spring 配置文件来过滤或不过滤用户。

问题是关于实现此功能的最佳方式,以便它干净且可维护。一种方法是拥有两个不同的 @Repository 并根据配置文件初始化正确的一个。一个存储库将返回所有用户,但另一个存储库将仅返回带有 filter=false 的用户。

我不喜欢这个实现的地方是会有很多代码重复。对于每个存储库方法,我必须在第二个存储库中使用相同的方法,但基于一列进行过滤。有没有一种方法可以定义某种“拦截器”,它可以自动为给定数据库实体上的每个读取查询执行此操作?

最佳答案

不是拦截器,但可以使用 jpa 标准来做到这一点:docs

这样您就可以动态配置您想要的内容。 Afaik,在运行时,它会比普通的旧解决方案慢一些,其中有几个标有 @ConditionalOnProperty 的 @Repository 或您选择的其他配置位,但是,它满足您更改行为的要求,而无需引入多个存储库。您想要做的是将规范/默认声明为一并将其传递。这样您以后也可以在运行时配置您的搜索。

关于java - 基于配置文件的 Spring 数据中实体的附加过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59964694/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com