@Audited
аннотаций не работает так, как вы считаете, это должно быть. Используя его в суперклассе, он не влияет на дочерние классы, которые его расширяют, по крайней мере, чтобы контролировать, является ли ребенок или не проверен. Это по дизайну.
Рассмотрите понятие, в котором у нас есть тип суперкласса и две различные реализации, которые мы хотим проверить с помощью своих свойств суперкласса и того, что у нас нет.
@MappedSuperclass
@Audited
public class Animal {}
@Entity
@Audited
public class Cat extends Animal {}
@Entity
public class Dog extends Animal {}
В этом примере, поскольку @Audited
не передается по наследству, просто поместив аннотацию на суперкласс и результат Cat
сущности в только Cat
проверяемого. Объект Dog
и его значения свойств суперкласса не являются.
Если @Audited
были обработаны как унаследованная аннотация, нам необходимо ввести ряд аннотаций @AuditOverride
, чтобы выполнить тот же пример, как показано ниже.
@MappedSuperclass
public class Animal {}
@Entity
@Audited
@AuditOverride(...)
public class Cat extends Animal {}
@Entity
public class Dog extends Animal {}
Что делает это хуже, если Animal
было подмножество его свойств ревизии, которая будет влиять на количество @AuditOverride
с.
Это становится еще более сложным, когда вы начинаете рассматривать стратегии наследования сущностей и как они вступают в игру с тем, следует ли проверять сущность или нет, и в какой степени на каком уровне иерархии.
Общая дискуссия HHH-6331 и HHH-9770.
Короче говоря, если вы хотите, чтобы ваши дочерние классы проверялись, они должны быть явно аннотированы.
спасибо - Naros – wthamira
Это описание для меня очень ясное! – wthamira
мы можем хранить данные аудита в отдельной базе данных вместо основной базы данных? – wthamira