Весна, Спящий. Интерфейс JpaRepository и свойство общего состояния @MappedSuperclass - PullRequest
0 голосов
/ 07 сентября 2018

У меня есть базовый класс

@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. Это проще, но кажется уродливым.

Как решить это наилучшим образом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...