У меня есть базовый класс
@MappedSuperclass
@Data
public class BaseEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Enumerated(EnumType.STRING)
@Column(length = 20)
private EntityStatus entityStatus;
public BaseEntity() {
entityStatus = EntityStatus.ACTIVE;
}
}
и я использую entityStatus в каждом объекте моего проекта. Он используется для пометки Entity Disabled вместо удаления из таблицы.
public enum EntityStatus {
ACTIVE, DISABLED;
}
@Entity
@Data
public class Event extends BaseEntity {
private String name;
private LocalDateTime start;
private LocalDateTime end;
private Boolean isTaxable;
}
Теперь я могу пометить свои объекты как Активные или Отключенные, также я все еще могу использовать интерфейс JpaRepository в моем DAO. Далее я хотел бы работать только с "Включенными" объектами. Как я могу это сделать?
В JpaRepository у меня есть отличные методы CRUD (и даже больше), но, похоже, мне просто нужно переписать их или создать какой-нибудь дочерний объект с родительской реализацией JpaRepository. Это на самом деле кажется накладным.
Другой вариант - создать сервис всего несколькими способами.
public BaseEntity filterDisabled (BaseEntity baseEntity)
public collection filterDisabled (Коллекция сущностей)
Я бы вызывал эти методы в своих службах каждый раз, когда получал ответ от уровня DAO. Это проще, но кажется уродливым.
Как решить это наилучшим образом?