Я пытаюсь реализовать мягкое удаление в моем весеннем проекте спящего режима.
Мой план состоит в том, чтобы переопределить метод удаления с помощью аннотации @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;
}
}
Спасибо за любую помощь :)




Попробуйте добавить аннотацию @Inherited вместе с @where.
тогда извини, брат .. поищи любой другой подход.
Я получаю ошибку компиляции - «Тип аннотации не применим к этому виду объявления». Это аннотация для аннотаций.