У меня есть абстрактный базовый класс A
, который является @MappedSuperClass
. Кроме того, есть несколько классов сущностей, которые расширяются от класса A
. Класс A
содержит атрибут STATUS
, который показывает, удалена запись или нет.
@MappedSuperclass
public abstract class A {
@Id
private Long id;
@Column(nullable = false)
private boolean status = true;
}
Я хочу иметь возможность выполнять мягкое удаление всех дочерних классов из класса A
с аннотацией @SQLDelete
. Например, у меня есть класс B extends A
, и всякий раз, когда я вызываю удаление для класса B
, я хочу, чтобы он обновлял статус этой записи в базе данных.
@Entity
@Table(name = "TempTable")
@SQLDelete(sql = "update TempTable set STATUS = 0 where ID = ?") //Basically, I don't want
//to write this in every
//class. Instead write
//it to class A once.
@Where(clause = "STATUS = 1")
public class B extends A {
private String alpha;
}
Прямо сейчас я могу выполнить мягкое удаление, но для этого мне нужно написать аннотацию @SQLDelete
в каждом классе. Я не хочу этого повторения и хочу написать его в базовом классе A
один раз. Там он обновит статус этой записи.
Это возможно? Если да, то как я могу этого достичь?
Заранее спасибо.