Hibernate определяет аннотацию @Where в суперклассе

Я пытаюсь реализовать мягкое удаление в моем весеннем проекте спящего режима. Мой план состоит в том, чтобы переопределить метод удаления с помощью аннотации @SQLDelete и отфильтровать логические удаленные объекты с помощью аннотации спящего режима @Where в моих запросах.

У меня возникают некоторые трудности, когда я пытаюсь определить предложение @Where в суперклассе. Кажется, что объекты не наследуют предложение @Where от абстрактного базового класса.

Примечание: Если я перенесу аннотацию @Where в класс сущности, все будет работать, как ожидалось

Базовый класс сущности:

@MappedSuperclass
@Where(clause = " IS_DELETED = false")
public abstract class BaseEntity {

   @Column(name = "IS_DELETED")
   private boolean isDeleted;

   public BaseEntity() {
   }

   public boolean getIsDeleted() {
      return this.isDeleted;
   }

   public void setIsDeleted(boolean isDeleted) {
      this.isDeleted = isDeleted;
   }
 }

Класс сущности:

@Entity
@Table(name = "Events")
@SQLDelete(sql  = "UPDATE events " +
                "SET IS_DELETED = true " +
                "WHERE id = ?")
public class Event extends BaseEntity {

   @Id
   @GeneratedValue(strategy = GenerationType.AUTO)
   @Column(name = "ID")
   private Long id;

   @Column(name = "NAME")
   private String name;

   public Event() {
   }

   public Long getId() {
      return id;
   }

   public void setId(Long id) {
      this.id = id;
   }

   public String getName() {
      return name;
   }

   public void setName(String name) {
      this.name = name;
   }
}

Спасибо за любую помощь :)

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
5
0
455
1

Ответы 1

Попробуйте добавить аннотацию @Inherited вместе с @where.

Я получаю ошибку компиляции - «Тип аннотации не применим к этому виду объявления». Это аннотация для аннотаций.

Ron Badur 16.07.2018 19:46

тогда извини, брат .. поищи любой другой подход.

Alien 16.07.2018 19:48

Другие вопросы по теме