У меня есть таблица БД, назовем ее USERS. В этой таблице у меня есть стандартные поля, такие как name
, surname
, age
, et c. Эта таблица сопоставлена с классом сущности JPA:
@Entity
@Table(name = "users")
public class User {
@Id
@Column(name = "login")
private String id;
@Column(name = "name")
private String name;
//etc...
}
Теперь мне нужно иметь возможность фильтровать некоторых пользователей в зависимости от среды. Среда может быть определена на основе активного профиля Spring. Мое предположение состояло в том, чтобы добавить новый столбец БД, скажем, boolean filter
, и на основе профиля Spring фильтровать или нет пользователя.
Вопрос в том, как лучше реализовать эту функцию, чтобы будет чистым и ремонтопригодным. Один из способов состоит в том, чтобы получить два разных @Repository
и в зависимости от профиля инициировать правильный. Один репозиторий вернет всех пользователей, а другой вернет только пользователей с filter=false
.
Что мне не нравится в этой реализации, так это то, что будет много дублирования кода. Для каждого метода хранилища у меня должен быть один и тот же метод во втором хранилище, но с фильтрацией по одному столбцу. Есть ли способ определить, может быть, какой-нибудь «перехватчик», который будет делать это автоматически для каждого запроса на чтение для данной сущности БД?